Das
VintaSoft Barcode .NET SDK ist das professionelle, plattformübergreifende SDK für Windows, Linux und macOS, mit dem QR-Codes erkannt und generiert werden können Barcodes in .NET, WPF, Web, MAUI. Mit nur wenigen Codezeilen können Sie Ihrer .NET-Anwendung die Fähigkeit hinzufügen, QR-Codes zu erkennen und zu generieren.
Was ist ein QR-Code?
Ein QR-Code ist ein zweidimensionaler Matrix-Barcode und der weltweit am häufigsten verwendete zweidimensionale Barcode. Der Name "Quick Response" (schnelle Antwort) spiegelt die Idee seiner Entwicklung wider: schnelle Erkennung aus jedem beliebigen Winkel. Ein charakteristisches Merkmal des QR-Codes sind die deutlich erkennbaren Suchmuster - schwarze Quadrate an den Ecken des Barcodes.
Eigenschaften des QR-Codes
Alle modernen Hersteller verwenden QR-Codes, die im Standard ISO/IEC 18004 beschrieben sind. Der AIM-Standard ITS/97-001 beschreibt QR-Code Modell 1, eine veraltete Version des Barcodes, deren Verwendung nicht empfohlen wird.
Der QR-Code kann gemischte Daten verschiedener Typen in vier Kodierungsmodi speichern:
- Alphanumerisch (bis zu 4296 Zeichen)
- Byte (bis zu 2953 Bytes)
- Numerisch (bis zu 7089 Ziffern)
- Kanji (bis zu 1817 Zeichen)
Der QR-Code verwendet den Reed-Solomon-Fehlerkorrekturalgorithmus, der die Erkennung beschädigter Barcodes ermöglicht. Bei der Erstellung eines Barcodes wird je nach den erwarteten Nutzungsbedingungen eine von vier Fehlerkorrekturstufen ausgewählt: Je höher die Fehlerkorrekturstufe, desto weniger Daten können im Barcode platziert werden.
Die Struktur der Barcode-Matrix
QR- und Micro-QR-Barcode-Matrizen haben die folgende Struktur:
- Ruhezone
- Suchmuster
- Informationen zum Format
- Timingmuster
- Ausrichtungsmuster
- Daten- und Fehlerkorrekturschicht
Was ist ein Micro-QR-Barcode?
Der Micro-QR-Barcode ist eine kompakte Version des QR-Codes. Er wird üblicherweise zur Kennzeichnung kleiner Verpackungen verwendet:
Der Micro-QR-Barcode hat nur ein Suchmuster. Die Datenmenge in diesem Barcode ist sehr begrenzt:
- Alphanumerisch (bis zu 21 Zeichen)
- Byte (bis zu 15 Bytes)
- Numerisch (bis zu 35 Ziffern)
- Kanji (bis zu 9 Zeichen)
Was ist ein "GS1 QR"-Barcode?
Der "GS1 QR"-Barcode ist ein QR-Code, der Werte im GS1-Systemdatenformat speichert.
Das VintaSoft Barcode .NET SDK kann "GS1 QR"-Barcodes generieren und erkennen.
Hier ist ein Bild des "GS1 QR"-Barcodes:
Was ist ein "GS1 Digital Link QR"-Barcode?
"Der GS1 Digital Link QR-Barcode ist ein QR-Barcode, der Werte im GS1 Digital Link-Format speichert.
Das VintaSoft Barcode .NET SDK kann GS1 Digital Link QR-Barcodes generieren und erkennen.
Hier ist ein Bild des "GS1 Digital Link QR"-Barcodes:
Was ist ein "XFA Compressed QR"-Barcode?
Der XFA Compressed QR-Barcode ist ein QR-Barcode, der Daten gemäß der Adobe XFA-Spezifikation komprimiert speichert.
Das VintaSoft Barcode .NET SDK kann "XFA Compressed QR"-Barcodes generieren und erkennen.
Hier ist ein Bild des "XFA Compressed QR"-Barcodes:
Was ist ein "Swiss QR Code"-Barcode?
Der "Swiss QR Code"-Barcode ist eine Untermenge des QR-Barcodes, der seit dem 1. Oktober 2022 in der Schweiz und in Liechtenstein für Rechnungen verwendet wird.
Das VintaSoft Barcode .NET SDK kann "Swiss QR Code"-Barcodes generieren und erkennen.
Hier ist ein Bild des "Swiss QR Code"-Barcodes:
Was ist ein "HIBC LIC QR Code"-Barcode?
Der "HIBC LIC QR Code"-Barcode ist eine Untergruppe des QR-Code-Barcodes und wird zur UDI-Konformität von Medizinprodukten verwendet, um Hersteller, Produkte und Chargen zu identifizieren. Das VintaSoft Barcode .NET SDK kann "HIBC LIC QR Code"-Barcodes generieren und erkennen.
Hier ist ein Bild des "HIBC LIC QR-Code"-Barcodes:
Spezielles Symbol "Struktur anhängen"
Der QR-Code unterstützt ein spezielles Symbol namens "StructuredAppendCharacter" (siehe
"StructuredAppend"), mit dem Daten in mehrere QR-Code-Abschnitte aufgeteilt werden können. Das Symbol ist im Barcode kodiert und ermöglicht die eindeutige Bestimmung der Anzahl und Reihenfolge der Barcode-Abschnitte. Diese Funktion kann verwendet werden, um einen länglichen Bereich zu markieren oder große Datenmengen zu speichern.
Mit dem VintaSoft Barcode .NET SDK können Sie Daten aufteilen und mehrere QR-Code-Barcodes generieren, die durch das Symbol "Struktur anhängen" verknüpft sind. Das SDK enthält außerdem einen Algorithmus zum Wiederherstellen von Daten aus einem Satz von QR-Code-Barcodes, die mithilfe des Symbols "Struktur anhängen" aufgeteilt wurden.
Welche QR-Code-Barcodes kann das VintaSoft Barcode .NET SDK erkennen?
Das VintaSoft Barcode .NET SDK erkennt alle Arten von QR- und Micro-QR-Barcodes. Für die Erkennung werden einzigartige Algorithmen verwendet, die es ermöglichen, Barcodes mit verschiedenen Problemen schnell zu erkennen:
- Beschädigte Matrix
- Geringer Kontrast
- Geringe Modulation
- Ungleichmäßige Beleuchtung
- Einseitige Kompression
- Räumliche Verzerrungen
- Barcode auf verzerrter Oberfläche gedruckt
- Große Anzahl von Barcodes in einem Bild
Hier ist ein C#-Code, der zeigt, wie QR-Code-Barcodes in einem mit einer Kamera aufgenommenen Bild erkannt werden:
/// <summary>
/// Reads QR Code barcodes from a <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="bitmap">A bitmap with barcodes.</param>
public static void ReadQRCodeBarcodesFromBitmap(System.Drawing.Bitmap bitmap)
{
// create barcode reader
using (Vintasoft.Barcode.BarcodeReader reader = new Vintasoft.Barcode.BarcodeReader())
{
// specify that reader must search for QR Code barcodes
reader.Settings.ScanBarcodeTypes = Vintasoft.Barcode.BarcodeType.QR;
// read barcodes from image
Vintasoft.Barcode.IBarcodeInfo[] infos = Vintasoft.Barcode.GdiExtensions.ReadBarcodes(reader, bitmap);
// if barcodes are not detected
if (infos.Length == 0)
{
System.Console.WriteLine("No barcodes found.");
}
// if barcodes are detected
else
{
// get information about extracted barcodes
System.Console.WriteLine(string.Format("{0} barcodes found:", infos.Length));
System.Console.WriteLine();
for (int i = 0; i < infos.Length; i++)
{
Vintasoft.Barcode.IBarcodeInfo info = infos[i];
System.Console.WriteLine(string.Format("[{0}:{1}]", i + 1, info.BarcodeType));
System.Console.WriteLine(string.Format("Value: {0}", info.Value));
System.Console.WriteLine(string.Format("Region: {0}", info.Region));
System.Console.WriteLine();
}
}
}
}
Welche QR-Code-Barcodes kann das VintaSoft Barcode .NET SDK generieren?
Das VintaSoft Barcode .NET SDK generiert alle Arten von QR- und Micro-QR-Barcodes.
Hier ist ein C#-Code, der zeigt, wie man ein Rasterbild eines QR-Code-Barcodes generiert:
/// <summary>
/// Returns the QR Code barcode as <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="value">The barcode value.</param>
/// <returns>A <see cref="System.Drawing.Bitmap"/> object.</returns>
public static System.Drawing.Bitmap GetQRCodeBarcodeAsBitmap(string value)
{
// create the barcode writer
using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
{
// set barcode writer settings
barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.QR;
barcodeWriter.Settings.Value = value;
// get a barcode image as System.Drawing.Bitmap
return Vintasoft.Barcode.GdiExtensions.GetBarcodeAsBitmap(barcodeWriter);
}
}
Hier ist ein C#-Code, der zeigt, wie man ein Rasterbild eines Micro-QR-Barcodes generiert:
/// <summary>
/// Returns the Micro QR barcode as <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="value">The barcode value.</param>
/// <returns>A <see cref="System.Drawing.Bitmap"/> object.</returns>
public static System.Drawing.Bitmap GetMicroQRBarcodeAsBitmap(string value)
{
// create the barcode writer
using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
{
// set barcode writer settings
barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.MicroQR;
barcodeWriter.Settings.Value = value;
// get a barcode image as System.Drawing.Bitmap
return Vintasoft.Barcode.GdiExtensions.GetBarcodeAsBitmap(barcodeWriter);
}
}
Hier ist ein C#-Code, der zeigt, wie man ein Vektorbild (SVG) eines QR-Code-Barcodes generiert:
/// <summary>
/// Returns the QR Code barcode in vector form as a SVG string.
/// </summary>
/// <param name="barcodeValue">Barcode value.</param>
public static void GetQrCodeBarcodeAsSvgString(string barcodeValue)
{
// create the barcode writer
using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
{
// set barcode writer settings
barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.QR;
barcodeWriter.Settings.Value = barcodeValue;
// generate QR Code barcode as a SVG string
return barcodeWriter.GetBarcodeAsSvgFile();
}
}