Barcodes & QRs in C# & VB.NET Anwendungen

This article was translated from English: Does it need improvement?
Translated
View the article in English

Das Lesen und Schreiben von Barcodes in C# und allen anderen .NET-Sprachen ist mit der Iron Barcode-Softwarebibliothek von Iron Software ganz einfach.

IronBarcode installieren

Der erste Schritt auf dieser Reise ist die Installation von Iron Barcode, die Sie mit unserem NuGet-Paket oder mit herunterladen der DLL von dieser Website. Die Iron Barcode-Klassen finden Sie in der IronBarcode namensraum.

Der einfachste Weg, IronBarcode zu installieren, ist die Verwendung des NuGet Package Managers für Visual-Studio: Der Paketname lautet "Barcode".

Install-Package BarCode

https://www.nuget.org/packages/Barcode/

Lesen eines Barcodes oder QR-Codes

Das Einlesen eines Barcodes mit Iron Barcode erfordert nur ein paar Zeilen Code.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-1.cs
using IronBarCode;

BarcodeResults results = BarcodeReader.Read("QuickStart.jpg");
if (results != null)
{
    foreach (BarcodeResult result in results)
    {
        Console.WriteLine(result.Text);
    }
}
Imports IronBarCode

Private results As BarcodeResults = BarcodeReader.Read("QuickStart.jpg")
If results IsNot Nothing Then
	For Each result As BarcodeResult In results
		Console.WriteLine(result.Text)
	Next result
End If
VB   C#

Um die Geschwindigkeit und Genauigkeit beim Lesen von Barcodes zu verbessern, können wir ein bestimmtes Barcodeformat festlegen(oder Formate) so dass Iron Barcode nicht jeden einzelnen bekannten Barcodetyp abdecken muss. Wir können auch einen bestimmten Bildausschnitt oder Bereich eines Bildes auswählen, wenn dieser bekannt ist.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-2.cs
using IronBarCode;

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    CropArea = new System.Drawing.Rectangle(100, 200, 300, 400),
};

BarcodeResults result = BarcodeReader.Read("QuickStart.jpg", myOptionsExample);
if (result != null)
{
    Console.WriteLine(result.First().Text);
}
Imports IronBarCode

Private myOptionsExample As New BarcodeReaderOptions() With {
	.ExpectMultipleBarcodes = False,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
	.CropArea = New System.Drawing.Rectangle(100, 200, 300, 400)
}

Private result As BarcodeResults = BarcodeReader.Read("QuickStart.jpg", myOptionsExample)
If result IsNot Nothing Then
	Console.WriteLine(result.First().Text)
End If
VB   C#

Wir können auch nach mehreren Barcodes in einem einfachen Scanvorgang suchen.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-3.cs
using IronBarCode;

BarcodeResults results = BarcodeReader.Read("MultipleBarcodes.png");

// Loop through the results
foreach (BarcodeResult result in results)
{
    string value = result.Value;
    Bitmap img = result.BarcodeImage;
    BarcodeEncoding barcodeType = result.BarcodeType;
    byte[] binary = result.BinaryValue;
    Console.WriteLine(result.Value);
}
Imports IronBarCode

Private results As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.png")

' Loop through the results
For Each result As BarcodeResult In results
	Dim value As String = result.Value
	Dim img As Bitmap = result.BarcodeImage
	Dim barcodeType As BarcodeEncoding = result.BarcodeType
	Dim binary() As Byte = result.BinaryValue
	Console.WriteLine(result.Value)
Next result
VB   C#

Wir können Iron Barcode auch verwenden, um Barcodes von einer oder mehreren Seiten von PDF-Dokumenten oder mehrseitigen TIFFs zu lesen.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-4.cs
using IronBarCode;

BarcodeResults pagedResults = BarcodeReader.Read("MultipleBarcodes.pdf");

// Loop through the results
foreach (BarcodeResult result in pagedResults)
{
    int pageNumber = result.PageNumber;
    string value = result.Value;
    Bitmap img = result.BarcodeImage;
    BarcodeEncoding barcodeType = result.BarcodeType;
    byte[] binary = result.BinaryValue;
    Console.WriteLine(result.Value);
}

// or from a multi-page  TIFF scan with image correction:
BarcodeResults multiFrameResults = BarcodeReader.Read(inputImage: "Multiframe.tiff", new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Detailed,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.Code128,
    Multithreaded = false,
    RemoveFalsePositive = false,
    ImageFilters = null
});
Imports IronBarCode

Private pagedResults As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.pdf")

' Loop through the results
For Each result As BarcodeResult In pagedResults
	Dim pageNumber As Integer = result.PageNumber
	Dim value As String = result.Value
	Dim img As Bitmap = result.BarcodeImage
	Dim barcodeType As BarcodeEncoding = result.BarcodeType
	Dim binary() As Byte = result.BinaryValue
	Console.WriteLine(result.Value)
Next result

' or from a multi-page  TIFF scan with image correction:
Dim multiFrameResults As BarcodeResults = BarcodeReader.Read(inputImage:= "Multiframe.tiff", New BarcodeReaderOptions With {
	.Speed = ReadingSpeed.Detailed,
	.ExpectMultipleBarcodes = True,
	.ExpectBarcodeTypes = BarcodeEncoding.Code128,
	.Multithreaded = False,
	.RemoveFalsePositive = False,
	.ImageFilters = Nothing
})
VB   C#

Barcodes schreiben

Um Barcodes mit Iron Barcode zu erstellen oder zu schreiben, verwenden wir die Klasse BarcodeWriter. Mit BarcodeWriter ist das Schreiben von Strichcodes extrem einfach. Wir geben einfach das Barcode-Format und den Wert an, den wir ausdrücken möchten, und es wird ein Bild erstellt, das als System.Drawing.Image-Objekt exportiert oder in einer Datei gespeichert werden kann.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-5.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.SaveAsImage("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.SaveAsImage("myBarcode.png")
VB   C#

Gestaltung von Barcodes

Die visuelle Darstellung eines Barcodes kann mit Iron Barcode sehr einfach manipuliert werden. Die Ausgabe jedes BarcodeWriter-Vorgangs ist ein generiertes Barcode-Objekt. Dieses generierte Barcode-Objekt verfügt über eine Fluent-API, mit der die grafischen Einstellungen des Barcodes in einer einzigen Codezeile festgelegt werden können, ähnlich wie bei Linq.

Zu den beliebten Funktionen für die Gestaltung von Barcodes gehören die Größenänderung von Barcodes, das Festlegen von Rändern, das Ändern von Hintergrundfarben, das Ändern von Barcodefarben und das Überprüfen, ob der ausgegebene Barcode noch lesbar ist.

In ähnlicher Weise können wir auch Anmerkungen wie Text zu einem Strichcode in jeder beliebigen Schriftart hinzufügen oder den Wert des Strichcodes ganz einfach unter oder über dem Strichcode platzieren.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-6.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.AddAnnotationTextAboveBarcode("Product URL:");
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SaveAsImage("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.AddAnnotationTextAboveBarcode("Product URL:")
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.SaveAsImage("myBarcode.png")
VB   C#

Barcodes als HTML exportieren

Das generierte Barcode-Objekt verfügt auch über eine praktische Funktion zum Exportieren von HTML aus einem generierten Barcode. Es kann einen Barcode als eigenständiges HTML-Dokument ohne externe Assets, als eigenständiges HTML-Tag oder als Daten-URI exportieren.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-7.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.AddAnnotationTextAboveBarcode("Product URL:");
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SetMargins(100);
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple);

// All major image formats supported as well as PDF and HTML
myBarcode.SaveAsPng("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.AddAnnotationTextAboveBarcode("Product URL:")
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.SetMargins(100)
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple)

' All major image formats supported as well as PDF and HTML
myBarcode.SaveAsPng("myBarcode.png")
VB   C#

QR-Codes generieren

Bei der Erzeugung von QR-Codes mit Iron Barcode können wir die QR Code Writer-Klasse anstelle der BarcodeWriter-Klasse verwenden. Diese Klasse bietet einige neue und interessante Funktionen für das Schreiben von QR-Codes. Sie ermöglicht es uns, die QR-Fehlerkorrektur einzustellen, so dass Sie ein ausgewogenes Verhältnis zwischen der Größe Ihres QR-Codes und seiner leichten Lesbarkeit wählen können.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-8.cs
using IronBarCode;

QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf");
Imports IronBarCode

QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf")
VB   C#

Mit Iron Barcode können QR-Codes auch stilisiert werden, z. B. mit einer Logografik, die genau in der Mitte des Bildes platziert und am Raster ausgerichtet wird. Es kann auch eingefärbt werden, damit es zu einer bestimmten Marke oder grafischen Identität passt.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-9.cs
using IronBarCode;
using IronSoftware.Drawing;

QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo);
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf");
Imports IronBarCode
Imports IronSoftware.Drawing

Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo)
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf")
VB   C#

Unterstützte Barcode-Formate

Iron Barcode unterstützt eine große Anzahl gängiger Barcodeformate:

  • QR-Codes, einschließlich dekorierter und gebrandeter QR-Codes mit Logos und Farben
  • Mehrformatige Barcodes, wie Aztec, Data Matrix, CODE 93 und CODE 128
  • RSS Expanded Databar, UPS MaxiCode, und USPS IMb OneCode Barcodes
  • Gestapelte lineare Barcodes wie RSS-14 und PDF-417
  • Konventionelle numerische Strichcodeformate wie UPCA, UPCE, EAN-8, EAN-13, Codabar, ITF, MSI und Plessey
:path=/static-assets/barcode/content-code-examples/get-started/get-started-10.cs
using IronBarCode;

var myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.SaveAsImage("myBarcode.png");
myBarcode.SaveAsGif("myBarcode.gif");
myBarcode.SaveAsHtmlFile("myBarcode.html");
myBarcode.SaveAsJpeg("myBarcode.jpg");
myBarcode.SaveAsPdf("myBarcode.Pdf");
myBarcode.SaveAsPng("myBarcode.png");
myBarcode.SaveAsTiff("myBarcode.tiff");
myBarcode.SaveAsWindowsBitmap("myBarcode.bmp");
Image myBarcodeImage = myBarcode.Image;
Bitmap myBarcodeBitmap = myBarcode.ToBitmap();
string dataUrl = myBarcode.ToDataUrl();
string imgTagForHtml = myBarcode.ToHtmlTag();
byte[] pngBytes = myBarcode.ToPngBinaryData();

// Binary barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
using (System.IO.Stream pdfStream = myBarcode.ToPdfStream())
{
    // Stream barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
}
myBarcode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50);
Imports IronBarCode

Private myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.SaveAsImage("myBarcode.png")
myBarcode.SaveAsGif("myBarcode.gif")
myBarcode.SaveAsHtmlFile("myBarcode.html")
myBarcode.SaveAsJpeg("myBarcode.jpg")
myBarcode.SaveAsPdf("myBarcode.Pdf")
myBarcode.SaveAsPng("myBarcode.png")
myBarcode.SaveAsTiff("myBarcode.tiff")
myBarcode.SaveAsWindowsBitmap("myBarcode.bmp")
Dim myBarcodeImage As Image = myBarcode.Image
Dim myBarcodeBitmap As Bitmap = myBarcode.ToBitmap()
Dim dataUrl As String = myBarcode.ToDataUrl()
Dim imgTagForHtml As String = myBarcode.ToHtmlTag()
Dim pngBytes() As Byte = myBarcode.ToPngBinaryData()

' Binary barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
Using pdfStream As System.IO.Stream = myBarcode.ToPdfStream()
	' Stream barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
End Using
myBarcode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50)
VB   C#

Warum Iron Barcode wählen?

Iron Barcode bietet eine benutzerfreundliche API für Entwickler zum Lesen und Schreiben von Barcodes für .NET, die für Genauigkeit und eine niedrige Fehlerrate in realen Anwendungsfällen optimiert ist.

Die Klasse BarcodeWriter zum Beispiel validiert und korrigiert automatisch die Prüfsummen von UPCA- und UPCE-Barcodes. Außerdem werden Zahlen, die für ein bestimmtes numerisches Format zu kurz sind, mit einem "Zero-Pad" versehen. Wenn Ihre Daten für das angegebene Datenformat nicht geeignet sind, weist Iron Barcode den Entwickler auf ein geeigneteres Barcodeformat hin, das er verwenden kann.

Iron Barcode glänzt auf dem Gebiet des Lesens von Barcodes, wenn der Barcode gescannt oder von einem fotografischen Bild gelesen wurde. Mit anderen Worten: Das Bild ist grafisch nicht perfekt und nicht einfach nur ein maschinell erstellter Screenshot.

Iron Barcode enthält eine automatische Rotations- und Perspektivkorrektur, eine Korrektur für digitales Rauschen und kann automatisch die Art des Barcodes erkennen, der in einem Bild kodiert ist.

Vorwärts bewegen

Um mehr aus Iron Barcode herauszuholen, empfehlen wir Ihnen, die Tutorials in diesem Dokumentationsabschnitt zu lesen, uns auf GitHub zu besuchen und die.NET API-Referenz in einem MSDN-Format.