VERGLEICH MIT ANDEREN KOMPONENTEN

Ein Vergleich zwischen IronBarcode und ZXing.NET

Veröffentlicht 12. Dezember 2022
Teilen Sie:

Ein Barcode-Scanner ist nicht immer für unsere Anwendungen geeignet. Vielleicht haben Sie bereits ein digitales Bild des Strichcodes und möchten wissen, was er in englischer Sprache bedeutet. Außerdem liest dieser Scanner nur 1-D-Barcodes, die nur eine begrenzte Datenmenge enthalten und nur in der Windows RT-Klassenbibliothek verwendet werden können. 2-D-Barcodes (auch bekannt als QR-Codes) sind heute weit verbreitet und können viel mehr Informationen enthalten.

Mit einfachen API-Aufrufen und wenigen Programmierschritten kann eine C#-basierte Anwendung zum Lesen von Barcodes erstellt werden. Eine .NET-unterstützte Anwendung läuft unter Windows, macOS oder Linux, ohne auf ein Tool oder eine API eines Drittanbieters angewiesen zu sein.

In diesem Artikel werden die beiden leistungsfähigsten .NET Core App-Bibliotheken zum programmatischen Lesen von Barcodes verglichen. Diese beiden Bibliotheken sind IronBarcode und ZXing.NET. Wir werden sehen, was den IronBarcode leistungsfähiger und robuster als ZXing.NET macht.


Was ist ZXing.NET

ZXing.NET ist eine Bibliothek, die Barcodes dekodiert und generiert (wie QR-Code, PDF 417, EAN, UPC, Aztec, Data Matrix, Codabar). ZXing, was für "Zebrastreifen" steht, ist eine Java-basierte Open-Source-Bibliothek, die eine Vielzahl von 1D- und 2D-Barcodeformaten unterstützt.

Seine wesentlichen Merkmale sind die folgenden:

  • Es kann URLs, Kontaktdaten, Kalenderereignisse und mehr speichern
  • Es ist auf Java SE-Anwendungen zugeschnitten
  • Es ermöglicht die Integration von Barcodescannern über Intent
  • Es handelt sich um eine unkomplizierte Google Glass-App

Was ist IronBarcode

IronBarcode ist eine C#-Bibliothek, mit der Programmierer Strichcodes lesen und erzeugen können. Als eine führende Barcode-Bibliothek unterstützt IronBarcode eine Vielzahl von 1-dimensionalen und 2-dimensionalen Barcodes, einschließlich dekorierter (farbig und gebrandmarkt) QR-Codes. Es unterstützt die .NET-Standard- und Core-Versionen 2 und höher, so dass es plattformübergreifend auf Azure, Linux, macOS, Windows und Web eingesetzt werden kann. IronBarcode ist eine bekannte Klassenbibliothek oder Komponente für das .NET-System, die es C#-, VB.NET- und F#-Entwicklern ermöglicht, mit standardisierten Programmiersprachen zu arbeiten. Sie ermöglicht es den Kunden, Scanner-Tags zu durchsuchen und neue standardisierte Etiketten zu erstellen. Es funktioniert hervorragend mit 2D-Barcodes und anderen standardisierten 3D-Barcodes.

IronBarcode unterstützt jetzt auch 2D-Barcodes. Es bietet Funktionen zur Optimierung der Farbgebung, des Stylings und der Verpixelung dieser Codes sowie die Möglichkeit, ihnen Logos zur Verwendung in Druck- oder Werbematerialien hinzuzufügen. Diese Bibliothek kann auch schräge und deformierte Barcodes lesen, was andere Barcode-Software möglicherweise nicht kann.

Installation von IronBarcode und ZXing.NET

Installation von ZXing.NET

Um die ZXing.NET-Bibliothek zu verwenden, installieren Sie die folgenden beiden Pakete in Ihrer ASP.NET Core-Anwendung mithilfe der NuGet Package Manager Console:

1. ZXing.Net

Install-Package ZXing.Net

2. ZXing.Net.Bindings.CoreCompat.System.Drawing

Install-Package ZXing.Net.Bindings.CoreCompat.System.Drawing -Version 0.16.5-beta

Alternativ können Sie ZXing.NET auch mit dem NuGet Package Manager in Ihrem Projekt installieren. Gehen Sie dazu zu Tools > NuGet-Paketmanager > NuGet-Pakete für Lösungen verwalten..., wechseln Sie dann zur Registerkarte "Durchsuchen" und suchen Sie nach "ZXing.NET".

Ein Vergleich zwischen IronBarcode und Zxing.NET, Abbildung 1: ASP.NET-Webanwendung

ASP.NET-Webanwendung

Installation von IronBarcode

Installieren Sie IronBarcode mit dem NuGet Package Manager oder laden Sie die DLL direkt von der produkt-Website. Die IronBarcode namespace enthält alle IronBarcode-Klassen.

IronBarcode kann mit dem NuGet Package Manager für Visual Studio installiert werden: der Paketname ist "Barcode".

Install-Package BarCode

2D-Barcode erstellen

ZXing.NET verwenden

Erstellen Sie zunächst einen neuen Ordner namens "qrr" im Stammordner der Projektdatei.

Anschließend erstellen wir QR-Dateien und speichern die Bildsystemdateien im Ordner "qrr".

Fügen Sie innerhalb des Controllers die Funktion `GenerateFile()methode wie unten im Quellcode gezeigt.

public ActionResult GenerateFile()
{
    return View();
}

[HttpPost]
public ActionResult GenerateFile(string qrText)
{
    Byte [] byteArray;
    var width = 250; // width of the QR Code
    var height = 250; // height of the QR Code
    var margin = 0;
    var qrCodeWriter = new ZXing.BarcodeWriterPixelData
    {
        Format = ZXing.BarcodeFormat.QR_CODE,
        Options = new QrCodeEncodingOptions
        {
            Height = height,
            Width = width,
            Margin = margin
        }
    };
    var pixelData = qrCodeWriter.Write(qrText);

    // creating a PNG bitmap from the raw pixel data; if only black and white colors are used it makes no difference if the raw pixel data is BGRA oriented and the bitmap is initialized with RGB
    using (var bitmap = new System.Drawing.Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb))
    {
        using (var ms = new MemoryStream())
        {
            var bitmapData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
            try
            {
                // we assume that the row stride of the bitmap is aligned to 4 byte multiplied by the width of the image
                System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan, pixelData.Pixels.Length);
            }
            finally
            {
                bitmap.UnlockBits(bitmapData);
            }

            // save to folder
            string fileGuid = Guid.NewGuid().ToString().Substring(0, 4);
            bitmap.Save(Server.MapPath("~/qrr") + "/file-" + fileGuid + ".png", System.Drawing.Imaging.ImageFormat.Png);

            // save to stream as PNG
            bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            byteArray = ms.ToArray();
        }
    }
    return View(byteArray);
}
public ActionResult GenerateFile()
{
    return View();
}

[HttpPost]
public ActionResult GenerateFile(string qrText)
{
    Byte [] byteArray;
    var width = 250; // width of the QR Code
    var height = 250; // height of the QR Code
    var margin = 0;
    var qrCodeWriter = new ZXing.BarcodeWriterPixelData
    {
        Format = ZXing.BarcodeFormat.QR_CODE,
        Options = new QrCodeEncodingOptions
        {
            Height = height,
            Width = width,
            Margin = margin
        }
    };
    var pixelData = qrCodeWriter.Write(qrText);

    // creating a PNG bitmap from the raw pixel data; if only black and white colors are used it makes no difference if the raw pixel data is BGRA oriented and the bitmap is initialized with RGB
    using (var bitmap = new System.Drawing.Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb))
    {
        using (var ms = new MemoryStream())
        {
            var bitmapData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
            try
            {
                // we assume that the row stride of the bitmap is aligned to 4 byte multiplied by the width of the image
                System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan, pixelData.Pixels.Length);
            }
            finally
            {
                bitmap.UnlockBits(bitmapData);
            }

            // save to folder
            string fileGuid = Guid.NewGuid().ToString().Substring(0, 4);
            bitmap.Save(Server.MapPath("~/qrr") + "/file-" + fileGuid + ".png", System.Drawing.Imaging.ImageFormat.Png);

            // save to stream as PNG
            bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            byteArray = ms.ToArray();
        }
    }
    return View(byteArray);
}
Public Function GenerateFile() As ActionResult
	Return View()
End Function

<HttpPost>
Public Function GenerateFile(ByVal qrText As String) As ActionResult
	Dim byteArray() As Byte
	Dim width = 250 ' width of the QR Code
	Dim height = 250 ' height of the QR Code
	Dim margin = 0
	Dim qrCodeWriter = New ZXing.BarcodeWriterPixelData With {
		.Format = ZXing.BarcodeFormat.QR_CODE,
		.Options = New QrCodeEncodingOptions With {
			.Height = height,
			.Width = width,
			.Margin = margin
		}
	}
	Dim pixelData = qrCodeWriter.Write(qrText)

	' creating a PNG bitmap from the raw pixel data; if only black and white colors are used it makes no difference if the raw pixel data is BGRA oriented and the bitmap is initialized with RGB
	Using bitmap = New System.Drawing.Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb)
		Using ms = New MemoryStream()
			Dim bitmapData = bitmap.LockBits(New System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb)
			Try
				' we assume that the row stride of the bitmap is aligned to 4 byte multiplied by the width of the image
				System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan, pixelData.Pixels.Length)
			Finally
				bitmap.UnlockBits(bitmapData)
			End Try

			' save to folder
			Dim fileGuid As String = Guid.NewGuid().ToString().Substring(0, 4)
			bitmap.Save(Server.MapPath("~/qrr") & "/file-" & fileGuid & ".png", System.Drawing.Imaging.ImageFormat.Png)

			' save to stream as PNG
			bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
			byteArray = ms.ToArray()
		End Using
	End Using
	Return View(byteArray)
End Function
VB   C#

Die einzige Änderung besteht darin, die QR-Code-Datei im Ordner "qrr" zu speichern. Dies wird mit den beiden folgenden Codezeilen durchgeführt.

string fileGuid = Guid.NewGuid().ToString().Substring(0, 4);
bitmap.Save(Server.MapPath("~/qrr") + "/file-" + fileGuid + ".png", System.Drawing.Imaging.ImageFormat.Png);
string fileGuid = Guid.NewGuid().ToString().Substring(0, 4);
bitmap.Save(Server.MapPath("~/qrr") + "/file-" + fileGuid + ".png", System.Drawing.Imaging.ImageFormat.Png);
Dim fileGuid As String = Guid.NewGuid().ToString().Substring(0, 4)
bitmap.Save(Server.MapPath("~/qrr") & "/file-" & fileGuid & ".png", System.Drawing.Imaging.ImageFormat.Png)
VB   C#

Sie müssen auch die Ansicht "GenerateFile" erstellen und den folgenden Code darin einfügen. Die Ansicht "GenerateFile" ist identisch mit der Ansicht "Index".

@model Byte []
@using (Html.BeginForm(null, null, FormMethod.Post))
{
    <table>
        <tbody>
            <tr>
                <td>
                    <label>Enter text for creating QR Code</label>
                </td>
                <td>
// text box to enter text...
                    <input type="text" name="qrText" />
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <button>Submit</button>
                </td>
            </tr>
        </tbody>
    </table>
}
@{
    if (Model != null)
    {
        <h3>QR Code Successfully Generated</h3>
// img tag to display generated QR code...
        <img src="@String.Format("data:image/png;base64,{0}", Convert.ToBase64String(Model))" />
    }
}
@model Byte []
@using (Html.BeginForm(null, null, FormMethod.Post))
{
    <table>
        <tbody>
            <tr>
                <td>
                    <label>Enter text for creating QR Code</label>
                </td>
                <td>
// text box to enter text...
                    <input type="text" name="qrText" />
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <button>Submit</button>
                </td>
            </tr>
        </tbody>
    </table>
}
@{
    if (Model != null)
    {
        <h3>QR Code Successfully Generated</h3>
// img tag to display generated QR code...
        <img src="@String.Format("data:image/png;base64,{0}", Convert.ToBase64String(Model))" />
    }
}
model Function [using](Html.BeginForm ByVal As (Nothing, Nothing, FormMethod.Post)) As Byte()
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <table> <tbody> <tr> <td> <label> Enter text for creating QR Code</label> </td> <td> <input type="text" name="qrText" /> </td> </tr> <tr> <td colspan="2"> <button> Submit</button> </td> </tr> </tbody> </table>
	"qrText" /> </td> </tr> (Of tr) <td colspan="2"> (Of button) Submit</button> </td> </tr> </tbody> </table>
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <table> <tbody> <tr> <td> <label> Enter text for creating QR Code</label> </td> <td> <input type="text" name="qrText" /> </td> </tr> <tr> <td colspan
	"text" name="qrText" /> </td> </tr> (Of tr) <td colspan
	(Of table) (Of tbody) (Of tr) (Of td) (Of label) Enter text for creating QR Code</label> </td> (Of td) <input type="text" name
End Function
@
If True Then
	If Model IsNot Nothing Then
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
		(Of h3) QR Code Successfully Generated</h3> <img src="@String.Format("data:image/png
		base64,
		If True Then
			0
		End If
		", Convert.ToBase64String(Model))" />
	End If
End If
VB   C#

Geben Sie einen beliebigen Wert in das Textfeld ein und klicken Sie auf die Schaltfläche "Senden". Der QR-Code wird erzeugt und als PNG-Datei im Ordner "qrr" gespeichert.

Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 2: QR-Code-Generator

QR-Code-Generator

Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 3: Angezeigte QR-Code-Dateien

Angezeigte QR-Code-Dateien

Unterstützte Barcode-Formate

IronBarcode unterstützt eine Vielzahl gängiger Barcodeformate, darunter:

  • QR-Codes mit Logos und Farben(einschließlich dekorierter und gebrandmarkter Codes)
  • Multiformat-Barcodes einschließlich Aztec, Data Matrix, CODE 93, CODE 128, RSS Expanded Databar, UPS MaxiCode und USPS, IMB (OneCode) barcodes
  • RSS-14 und PDF-417 gestapelte lineare Barcodes
  • UPCA, UPCE, EAN-8, EAN-13, Codabar, ITF, MSI und Plessey sind traditionelle numerische Strichcodeformate.

Barcode erstellen und speichern

var MyBarCode = IronBarcode.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);
var MyBarCode = IronBarcode.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);
Dim MyBarCode = IronBarcode.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#

ZXing hingegen ist eine Java-basierte Open-Source-Bibliothek zur Verarbeitung von 1D/2D-Barcode-Bildern. UPC-A, UPC-E, EAN-8, Code 93, Code 128, QR Code, Data Matrix, Aztec, PDF 417 und andere Barcodeformate werden unterstützt.

A Comparison between IronBarcode and Zxing.NET, Figure 4: Unterstützte Barcode-Formate

Unterstützte Barcode-Formate

QR-Code-Dateien mit IronBarcode erstellen

Um QR-Codes mit IronBarcode zu erstellen, können wir die Klasse QRCodeWriter anstelle der Klasse BarcodeWriter verwenden. In diesem Kurs werden einige neue und faszinierende Funktionen zur Erstellung von QR-Codes vorgestellt. Es ermöglicht uns, die QR-Fehlerkorrekturstufe einzustellen, so dass Sie ein Gleichgewicht zwischen der Größe und der Lesbarkeit Ihres QR-Codes finden können.

// Generate a simple QR Code image and save as PNG
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png");
// Generate a simple QR Code image and save as PNG
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png");
' Generate a simple QR Code image and save as PNG
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png")
VB   C#

Mit der Fehlerkorrektur können wir angeben, wie leicht ein QR-Code in der Praxis zu lesen ist. Höhere Fehlerkorrekturstufen führen zu größeren QR-Codes mit mehr Pixeln und mehr Komplexität. In der folgenden Abbildung wird die QR-Code-Datei angezeigt.

Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 5: Unterstützte Barcode-Formate

QR-Code-Bild

Wir beginnen mit der Angabe des Barcodewertes und des Barcodeformats aus der Aufzählung IronBarcode.BarcodeWriterEncoding. Wir können dann ein Bild, ein System.Drawing.Image oder ein Bitmap-Code-Objekt speichern. Das ist der gesamte Quellcode, den Sie benötigen!

// Generate a simple BarCode image and save as PNG using following namespaces
using IronBarCode;
GeneratedBarcode MyBarCode = IronBarcode.BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.Code128);
MyBarCode.SaveAsPng("MyBarCode.png");
// This line opens the image in your default image viewer
System.Diagnostics.Process.Start("MyBarCode.png");
// Generate a simple BarCode image and save as PNG using following namespaces
using IronBarCode;
GeneratedBarcode MyBarCode = IronBarcode.BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.Code128);
MyBarCode.SaveAsPng("MyBarCode.png");
// This line opens the image in your default image viewer
System.Diagnostics.Process.Start("MyBarCode.png");
' Generate a simple BarCode image and save as PNG using following namespaces
Imports IronBarCode
Private MyBarCode As GeneratedBarcode = IronBarcode.BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.Code128)
MyBarCode.SaveAsPng("MyBarCode.png")
' This line opens the image in your default image viewer
System.Diagnostics.Process.Start("MyBarCode.png")
VB   C#
Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 6: Erstellen eines Barcode-Bildes in C# Beispiel

Create a Barcode Image in C# Beispiel

IronBarcode unterstützt auch das Styling von QR-Codes, z. B. die Platzierung einer Logo-Grafik, die an einem Raster genau in der Mitte des Bildes ausgerichtet wird. Es kann auch farblich an eine bestimmte Marke oder grafische Identität angepasst werden.

Erstellen Sie zum Testen ein Logo im folgenden Codebeispiel und sehen Sie, wie einfach es ist, die Methode QRCodeWriter.CreateQRCodeWithLogo zu verwenden.

// Adding a Logo
var MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500);
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);
// Adding a Logo
var MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500);
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);
' Adding a Logo
Dim MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500)
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen)
VB   C#
Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 7: QR-Code mit Logobild erstellen

QR-Code mit Logobild erstellen

Schließlich speichern wir den generierten QR-Code als PDF-Datei. Der Einfachheit halber speichert die letzte Codezeile den QR-Code als HTML-Datei.

// Adding a Logo
var MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500);
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);
//Save as PDF
MyQRWithLogo.SaveAsPdf("MyQRWithLogo.pdf");
//Also Save as HTML
MyQRWithLogo.SaveAsHtmlFile("MyQRWithLogo.html");
// Adding a Logo
var MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500);
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);
//Save as PDF
MyQRWithLogo.SaveAsPdf("MyQRWithLogo.pdf");
//Also Save as HTML
MyQRWithLogo.SaveAsHtmlFile("MyQRWithLogo.html");
' Adding a Logo
Dim MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500)
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen)
'Save as PDF
MyQRWithLogo.SaveAsPdf("MyQRWithLogo.pdf")
'Also Save as HTML
MyQRWithLogo.SaveAsHtmlFile("MyQRWithLogo.html")
VB   C#

Im Folgenden sehen Sie, wie Sie einen Strichcode mit nur einer Zeile Code erstellen, gestalten und exportieren können.

IronBarcode enthält eine fließende API, die ähnlich wie System.Linq ist. Wir erstellen einen Strichcode, legen seine Ränder fest und exportieren ihn als Bitmap in einer einzigen Zeile, indem wir Methodenaufrufe verketten. Dies kann sehr nützlich sein und macht den Code leichter lesbar.

using IronBarCode;
using System.Drawing;
 // Fluent API for Barcode image generation.
string MyValue = "https://ironsoftware.com/csharp/barcode";
Bitmap BarcodeBmp = IronBarcode.BarcodeWriter.CreateBarcode(MyValue, BarcodeEncoding.PDF417).ResizeTo(300,200).SetMargins(100).ToBitmap();
using IronBarCode;
using System.Drawing;
 // Fluent API for Barcode image generation.
string MyValue = "https://ironsoftware.com/csharp/barcode";
Bitmap BarcodeBmp = IronBarcode.BarcodeWriter.CreateBarcode(MyValue, BarcodeEncoding.PDF417).ResizeTo(300,200).SetMargins(100).ToBitmap();
Imports IronBarCode
Imports System.Drawing
 ' Fluent API for Barcode image generation.
Private MyValue As String = "https://ironsoftware.com/csharp/barcode"
Private BarcodeBmp As Bitmap = IronBarcode.BarcodeWriter.CreateBarcode(MyValue, BarcodeEncoding.PDF417).ResizeTo(300,200).SetMargins(100).ToBitmap()
VB   C#

Als Ergebnis erscheint ein "System.Drawing.Image" eines PDF417-Barcodes wie unten dargestellt:

A Comparison between IronBarcode and ZXing.NET, Figure 8: Einfache, flüssige PDF417 Barcode-Erzeugung in C#

Einfache, flüssige PDF417 Barcode-Erzeugung in C#

Lesen von QR-Code-Dateien

QR-Codes lesen mit IronBarcode

Das Lesen eines Barcodes oder QR-Codes ist ein Kinderspiel, wenn Sie die IronBarcode-Klassenbibliothek in Verbindung mit dem .NET-Barcode-Leser verwenden. In unserem ersten Beispiel sehen wir, wie ein Barcode mit nur einer Zeile Code gelesen werden kann.

Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 9: Code128 Barcode Bild zu scannen mit C#

Code128 Barcode Bild zu scannen mit C#

Wir können den Barcodewert, das Bild, den Codierungstyp und die Binärdaten abrufen (wenn überhaupt) und geben es dann auf der Konsole aus.

using IronBarCode;
using System;
BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("GetStarted.png");
if (Result !=null && Result.Text == "https://ironsoftware.com/csharp/barcode/")
{
  Console.WriteLine("GetStarted was a success.  Read Value: " + Result.Text);
}
using IronBarCode;
using System;
BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("GetStarted.png");
if (Result !=null && Result.Text == "https://ironsoftware.com/csharp/barcode/")
{
  Console.WriteLine("GetStarted was a success.  Read Value: " + Result.Text);
}
Imports IronBarCode
Imports System
Private Result As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("GetStarted.png")
If Result IsNot Nothing AndAlso Result.Text = "https://ironsoftware.com/csharp/barcode/" Then
  Console.WriteLine("GetStarted was a success.  Read Value: " & Result.Text)
End If
VB   C#

Barcodes in PDFs lesen

Wir werden uns das Lesen eines gescannten PDF-Dokuments und das Auffinden aller eindimensionalen Barcodes in ein paar Zeilen Code ansehen.

Wie Sie sehen können, ist es sehr ähnlich wie das Lesen eines einzelnen Strichcodes von einem einzelnen Dokument, außer dass wir jetzt wissen, auf welcher Seitennummer der Strichcode entdeckt wurde.

using IronBarCode;
using System;
using System.Drawing;
// Multiple barcodes may be scanned up from a single document or image.  A PDF document may also be used as the input image
PagedBarcodeResult [] PDFResults = BarcodeReader.ReadBarcodesFromPdf("MultipleBarcodes.pdf");
// Work with the results
foreach (var PageResult in PDFResults)
{
    string Value = PageResult.Value;
    int PageNum = PageResult.PageNumber;
    System.Drawing.Bitmap Img = PageResult.BarcodeImage;
    BarcodeEncoding BarcodeType = PageResult.BarcodeType;
    byte [] Binary = PageResult.BinaryValue;
    Console.WriteLine(PageResult.Value+" on page "+ PageNum);
}
using IronBarCode;
using System;
using System.Drawing;
// Multiple barcodes may be scanned up from a single document or image.  A PDF document may also be used as the input image
PagedBarcodeResult [] PDFResults = BarcodeReader.ReadBarcodesFromPdf("MultipleBarcodes.pdf");
// Work with the results
foreach (var PageResult in PDFResults)
{
    string Value = PageResult.Value;
    int PageNum = PageResult.PageNumber;
    System.Drawing.Bitmap Img = PageResult.BarcodeImage;
    BarcodeEncoding BarcodeType = PageResult.BarcodeType;
    byte [] Binary = PageResult.BinaryValue;
    Console.WriteLine(PageResult.Value+" on page "+ PageNum);
}
Imports IronBarCode
Imports System
Imports System.Drawing
' Multiple barcodes may be scanned up from a single document or image.  A PDF document may also be used as the input image
Private PDFResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesFromPdf("MultipleBarcodes.pdf")
' Work with the results
For Each PageResult In PDFResults
	Dim Value As String = PageResult.Value
	Dim PageNum As Integer = PageResult.PageNumber
	Dim Img As System.Drawing.Bitmap = PageResult.BarcodeImage
	Dim BarcodeType As BarcodeEncoding = PageResult.BarcodeType
	Dim Binary() As Byte = PageResult.BinaryValue
	Console.WriteLine(PageResult.Value &" on page " & PageNum)
Next PageResult
VB   C#

Sie erhalten eine Ergebnisdatei mit allen Bitmap-Barcodes in der PDF-Datei.

Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 10: Lesen von in PDF-Dateien gespeicherten Barcodes Ergebnisse

Lesen von in PDF-Dateien gespeicherten Barcodes Ergebnisse

Lesen von Barcodes aus GIF und TIFF

// Multi-frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
PagedBarcodeResult [] MultiFrameResults = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels);
foreach (var PageResult in MultiFrameResults)
{
//...
}
// Multi-frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
PagedBarcodeResult [] MultiFrameResults = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels);
foreach (var PageResult in MultiFrameResults)
{
//...
}
' Multi-frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
Dim MultiFrameResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels)
For Each PageResult In MultiFrameResults
'...
Next PageResult
VB   C#
Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 11: Lesen von Barcodes aus einem TIFF-Bild mit mehreren Bildern

Lesen von Barcodes aus einem TIFF-Bild mit mehreren Bildern

Das folgende Beispiel zeigt, wie QR-Codes und PDF-417-Barcodes aus einer gescannten PDF-Datei gelesen werden können. Wir haben ein angemessenes Niveau der Barcode-Drehungskorrektur und der Barcode-Bildkorrektur eingestellt, um das Dokument leicht zu bereinigen, ohne dass es zu einem erheblichen Leistungsverlust kommt, weil wir unsere Anforderungen übererfüllen.

// PDF documents can also be scanned, and multiple threads will be used automatically in the background for improved performance
var ScanResults = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", BarcodeEncoding.All, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LightlyCleanPixels);
// Work with the results
foreach (var PageResult in ScanResults)
{
  string Value = PageResult.Value;
  ///...
}
// PDF documents can also be scanned, and multiple threads will be used automatically in the background for improved performance
var ScanResults = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", BarcodeEncoding.All, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LightlyCleanPixels);
// Work with the results
foreach (var PageResult in ScanResults)
{
  string Value = PageResult.Value;
  ///...
}
' PDF documents can also be scanned, and multiple threads will be used automatically in the background for improved performance
Dim ScanResults = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", BarcodeEncoding.All, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LightlyCleanPixels)
' Work with the results
For Each PageResult In ScanResults
  Dim Value As String = PageResult.Value
  '''...
Next PageResult
VB   C#
Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 12: Lesen von Barcodes aus einem gescannten PDF-Dokument

Lesen von Barcodes aus einem gescannten PDF-Dokument

Lesen von CORRUPTED QR-Codes aus Bitmap-Bildern

Das folgende Beispiel zeigt, dass diese C# Barcode-Bibliothek sogar ein beschädigtes Barcode-Miniaturbild lesen kann.

Die Größe der Barcode-Miniaturansicht wird automatisch korrigiert. IronBarcode in C# macht eine Datei lesbar.

Die Lesemethoden erkennen automatisch Barcode-Bilder, die zu klein sind, um ein echter Barcode zu sein, und skalieren sie hoch. Sie beseitigen alle digitalen Störungen, die bei der Arbeit mit Miniaturansichten auftreten, und machen sie wieder lesbar.

// Small or 'Thumbnail' barcode images are automatically detected by IronBarcode and corrected wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128);
// Small or 'Thumbnail' barcode images are automatically detected by IronBarcode and corrected wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128);
' Small or 'Thumbnail' barcode images are automatically detected by IronBarcode and corrected wherever possible even if they have much digital noise.
Dim SmallResult As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128)
VB   C#
A Comparison between IronBarcode and ZXing.NET, Figure 13: Automatische Korrektur der Größe von Barcode-Miniaturansichten

Automatische Korrektur der Größe von Barcode-Miniaturansichten

Lesen von Barcodes aus unvollkommenen Bildern

In der Praxis kann es vorkommen, dass wir Strichcodes von unvollkommenen Bildern lesen wollen. Es könnte sich um schiefe Bilder oder Fotos mit digitalem Rauschen handeln. Dies wäre mit den meisten Open-Source-Bibliotheken zur Erzeugung und zum Lesen von .NET-Barcodes unmöglich. IronBarcode hingegen macht das Lesen von Strichcodes aus unvollkommenen Bildern zu einem Kinderspiel.

Wir werden uns nun die Methode "ReadASingleBarcode" ansehen. Mit dem Parameter RotationCorrection versucht IronBarcode, Barcodes aus unvollkommenen digitalen Mustern zu de-skewen und zu lesen.

using IronBarCode;
using System;
using System.Drawing;
// All BarcodeResult.Read methods provide the developer with control to correct image and photograph correction and straightening rotation and perspective from skewed images
// * RotationCorrection   e.g BarcodeReader.BarcodeRotationCorrection.Extreme un-rotates and removes perspective from barcode images.
// * ImageCorrection      e.g BarcodeReader.BarcodeImageCorrection.DeepCleanPixels separates barcodes from background imagery and digital noise.
// * BarcodeEncoding      e.g. BarcodeEncoding.Code128,  Setting a specific Barcode format improves speed and reduces the risk of false positive results
// Example with a photo image
var PhotoResult = BarcodeReader.ReadASingleBarcode("Photo.png", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.DeepCleanPixels);
string Value = PhotoResult.Value;
System.Drawing.Bitmap Img = PhotoResult.BarcodeImage;
BarcodeEncoding BarcodeType = PhotoResult.BarcodeType;
byte [] Binary = PhotoResult.BinaryValue;
Console.WriteLine(PhotoResult.Value);
using IronBarCode;
using System;
using System.Drawing;
// All BarcodeResult.Read methods provide the developer with control to correct image and photograph correction and straightening rotation and perspective from skewed images
// * RotationCorrection   e.g BarcodeReader.BarcodeRotationCorrection.Extreme un-rotates and removes perspective from barcode images.
// * ImageCorrection      e.g BarcodeReader.BarcodeImageCorrection.DeepCleanPixels separates barcodes from background imagery and digital noise.
// * BarcodeEncoding      e.g. BarcodeEncoding.Code128,  Setting a specific Barcode format improves speed and reduces the risk of false positive results
// Example with a photo image
var PhotoResult = BarcodeReader.ReadASingleBarcode("Photo.png", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.DeepCleanPixels);
string Value = PhotoResult.Value;
System.Drawing.Bitmap Img = PhotoResult.BarcodeImage;
BarcodeEncoding BarcodeType = PhotoResult.BarcodeType;
byte [] Binary = PhotoResult.BinaryValue;
Console.WriteLine(PhotoResult.Value);
Imports IronBarCode
Imports System
Imports System.Drawing
' All BarcodeResult.Read methods provide the developer with control to correct image and photograph correction and straightening rotation and perspective from skewed images
' * RotationCorrection   e.g BarcodeReader.BarcodeRotationCorrection.Extreme un-rotates and removes perspective from barcode images.
' * ImageCorrection      e.g BarcodeReader.BarcodeImageCorrection.DeepCleanPixels separates barcodes from background imagery and digital noise.
' * BarcodeEncoding      e.g. BarcodeEncoding.Code128,  Setting a specific Barcode format improves speed and reduces the risk of false positive results
' Example with a photo image
Private PhotoResult = BarcodeReader.ReadASingleBarcode("Photo.png", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.DeepCleanPixels)
Private Value As String = PhotoResult.Value
Private Img As System.Drawing.Bitmap = PhotoResult.BarcodeImage
Private BarcodeType As BarcodeEncoding = PhotoResult.BarcodeType
Private Binary() As Byte = PhotoResult.BinaryValue
Console.WriteLine(PhotoResult.Value)
VB   C#
Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 14: Lesen eines Barcodes von einer Handykamera

Lesen eines Barcodes von einer Handykamera

IronBarcode kann auch mehrere Barcodes gleichzeitig lesen. Wir erhalten bessere Ergebnisse von IronBarcode, wenn wir eine Liste von Dokumenten erstellen und den Barcodeleser verwenden, um zahlreiche Dokumente zu lesen. Die Methode ReadBarcodesMultithreaded für den Barcode-Scanprozess verwendet mehrere Threads und möglicherweise alle Kerne Ihrer CPU und kann exponentiell schneller sein als das Lesen von Barcodes nacheinander.

// The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs.  All threads are automatically managed by IronBarcode.
var ListOfDocuments = new [] { "Image1.png", "image2.JPG", "image3.pdf" };
PagedBarcodeResult [] BatchResults = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments);
// Work with the results
foreach (var Result in BatchResults)
{
    string Value = Result.Value;
    //...
}
// The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs.  All threads are automatically managed by IronBarcode.
var ListOfDocuments = new [] { "Image1.png", "image2.JPG", "image3.pdf" };
PagedBarcodeResult [] BatchResults = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments);
// Work with the results
foreach (var Result in BatchResults)
{
    string Value = Result.Value;
    //...
}
' The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs.  All threads are automatically managed by IronBarcode.
Dim ListOfDocuments = { "Image1.png", "image2.JPG", "image3.pdf" }
Dim BatchResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments)
' Work with the results
For Each Result In BatchResults
	Dim Value As String = Result.Value
	'...
Next Result
VB   C#

Lesen und Dekodieren von QR-Codes mit ZXing.NET

Um die QR-Code-Dateien zu lesen, fügen Sie eine "ViewFile"-Aktionsmethode zu Ihrem Controller hinzu, wie unten gezeigt.

public ActionResult ViewFile()
{
    List<KeyValuePair<string, string>> fileData = new List<KeyValuePair<string, string>>();
    KeyValuePair<string, string> data;

    string [] files = Directory.GetFiles(Server.MapPath("~/qrr"));
    foreach (string file in files)
    {
        // create a barcode reader instance
        IBarcodeReader reader = new BarcodeReader();
        // load a bitmap
        var barcodeBitmap = (Bitmap)Image.FromFile(Server.MapPath("~/qrr") + "/" + Path.GetFileName(file));
        // detect and decode the barcode inside the bitmap
        var result = reader.Decode(barcodeBitmap);
        // do something with the result
        data = new KeyValuePair<string, string>(result.ToString(), "/QR/" + Path.GetFileName(file));
        fileData.Add(data);
    }
    return View(fileData);
}
public ActionResult ViewFile()
{
    List<KeyValuePair<string, string>> fileData = new List<KeyValuePair<string, string>>();
    KeyValuePair<string, string> data;

    string [] files = Directory.GetFiles(Server.MapPath("~/qrr"));
    foreach (string file in files)
    {
        // create a barcode reader instance
        IBarcodeReader reader = new BarcodeReader();
        // load a bitmap
        var barcodeBitmap = (Bitmap)Image.FromFile(Server.MapPath("~/qrr") + "/" + Path.GetFileName(file));
        // detect and decode the barcode inside the bitmap
        var result = reader.Decode(barcodeBitmap);
        // do something with the result
        data = new KeyValuePair<string, string>(result.ToString(), "/QR/" + Path.GetFileName(file));
        fileData.Add(data);
    }
    return View(fileData);
}
Public Function ViewFile() As ActionResult
	Dim fileData As New List(Of KeyValuePair(Of String, String))()
	Dim data As KeyValuePair(Of String, String)

	Dim files() As String = Directory.GetFiles(Server.MapPath("~/qrr"))
	For Each file As String In files
		' create a barcode reader instance
		Dim reader As IBarcodeReader = New BarcodeReader()
		' load a bitmap
		Dim barcodeBitmap = CType(Image.FromFile(Server.MapPath("~/qrr") & "/" & Path.GetFileName(file)), Bitmap)
		' detect and decode the barcode inside the bitmap
		Dim result = reader.Decode(barcodeBitmap)
		' do something with the result
		data = New KeyValuePair(Of String, String)(result.ToString(), "/QR/" & Path.GetFileName(file))
		fileData.Add(data)
	Next file
	Return View(fileData)
End Function
VB   C#
Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 15: Lesen und Dekodieren von QR-Codes

Lesen und Dekodieren von QR-Codes

Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 16: Dekodierter QR-Code

Dekodierter QR-Code

Dekodierung eines Barcodes innerhalb einer Bitmap

// create a barcode reader instance
BarcodeReader reader = new BarcodeReader();
// load a bitmap
var barcodeBitmap = (Bitmap)Image.LoadFrom("C:\\sample-barcode-image.png");
// detect and decode the barcode inside the bitmap
var result = reader.Decode(barcodeBitmap);
// do something with the result
if (result != null)
{
   txtDecoderType.Text = result.BarcodeFormat.ToString();
   txtDecoderContent.Text = result.Text;
}
// create a barcode reader instance
BarcodeReader reader = new BarcodeReader();
// load a bitmap
var barcodeBitmap = (Bitmap)Image.LoadFrom("C:\\sample-barcode-image.png");
// detect and decode the barcode inside the bitmap
var result = reader.Decode(barcodeBitmap);
// do something with the result
if (result != null)
{
   txtDecoderType.Text = result.BarcodeFormat.ToString();
   txtDecoderContent.Text = result.Text;
}
' create a barcode reader instance
Dim reader As New BarcodeReader()
' load a bitmap
Dim barcodeBitmap = CType(Image.LoadFrom("C:\sample-barcode-image.png"), Bitmap)
' detect and decode the barcode inside the bitmap
Dim result = reader.Decode(barcodeBitmap)
' do something with the result
If result IsNot Nothing Then
   txtDecoderType.Text = result.BarcodeFormat.ToString()
   txtDecoderContent.Text = result.Text
End If
VB   C#

ZXing Decoder Online

ZXing Decoder Online ist ein online verfügbarer Barcode- und QR-Code-Scanner, der die Dekodierung unterstützt. Laden Sie ein PNG- oder ein anderes Format des QR-Code-Bildes hoch, und die Dekodierung wird beginnen. Auf ähnliche Weise können Sie einen QR-Code für beliebige Daten erzeugen. Meistens handelt es sich bei diesen Informationen um eine URL oder einen Text, den Sie in einem QR-Code kodieren möchten.

Rufen Sie die ZXing Decoder-Website auf.

Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 17: Dekodierter QR-Code

ZXing Decoder Website

Ein Vergleich zwischen IronBarcode und ZXing.NET, Abbildung 18: Dekodierter QR-Code

ZXing Decode Ergebnis

Preisgestaltung und Lizenzierung

Die ZXing.NET-Bibliothek ist eine kostenlose Open-Source-Bibliothek, mit der Sie Barcode-Leseanwendungen erstellen können. Sie unterliegt jedoch einer Apache-Lizenz, die eine freie Nutzung für kommerzielle Zwecke nicht erlaubt.

Eine Entwicklerlizenz für IronBarcode wird kostenlos angeboten. IronBarcode hat ein einzigartiges Preissystem: das Lite-Paket beginnt bei $749 ohne zusätzliche Kosten. SaaS- und OEM-Artikel können ebenfalls erneut vertrieben werden. Jede Lizenz umfasst eine unbefristete Lizenz, Gültigkeit für Entwicklung/Training/Produktion, eine 30-tägige Geld-zurück-Garantie sowie ein Jahr Software-Support und Upgrades (einmaliger Kauf). Besuchen Sie diese seite um die vollständigen Preis- und Lizenzinformationen von IronBarcode einzusehen.

Warum IronBarcode wählen?

IronBarcode enthält eine benutzerfreundliche API für Entwickler zum Lesen und Schreiben von Barcodes in .NET, die die Genauigkeit und eine niedrige Fehlerquote in realen Anwendungsfällen optimiert.

Die Klasse BarcodeWriter beispielsweise validiert und korrigiert Prüfsummen von UPCA- und UPCE-Barcodes. Außerdem werden Zahlen, die zu kurz sind, um in ein bestimmtes numerisches Format eingegeben zu werden, mit einem "Zero-Pad" versehen. Wenn Ihre Daten nicht mit dem angegebenen Datenformat kompatibel sind, informiert IronBarcode den Entwickler über ein geeigneteres Barcodeformat, das er verwenden kann.

IronBarcode eignet sich hervorragend zum Lesen von Barcodes, wenn der Barcode gescannt oder von einem fotografischen Bild gelesen wurde, d. h. wenn das Bild grafisch nicht perfekt ist und es sich nicht um einen maschinell erstellten Screenshot handelt.

Wie unterscheidet sich IronBarcode von ZXing.NET?

IronBarcode basiert auf dem ZXing.NET (Zebrastreifen) kern, mit verbesserter Verarbeitungsfähigkeit. Sie verfügt über eine einfach zu bedienende API und eine niedrige Fehlerrate im Vergleich zur ZXing.NET Core-Bibliothek. Darüber hinaus unterstützt IronBarcode for .NET eine breitere Palette von Barcode-Formaten als die übliche ZXing.NET-Bibliothek.

IronBarcode for .NET ist eine verbesserte Version von ZXing.NET, die dem Benutzer eine Plattform für die kommerzielle Nutzung und die Möglichkeit bietet, das gleiche Paket auf mehreren Plattformen zu verwenden. Außerdem steht Ihnen ein umfassender technischer Support zur Verfügung, der Sie bei Bedarf jederzeit unterstützt.

IronBarcode umfasst automatische Drehung, Perspektivkorrektur und digitale Rauschkorrektur und kann den Typ des in einem Bild kodierten Strichcodes erkennen.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass IronBarcode eine vielseitige .NET-Softwarebibliothek und ein C#-QR-Code-Generator zum Lesen einer Vielzahl von Barcodeformaten ist, unabhängig davon, ob es sich um Screenshots, Fotos, Scans oder andere unvollkommene Bilder aus der Realität handelt.

IronBarcode ist eine der effektivsten Bibliotheken zur Erstellung und Identifizierung von Barcodes. Was die Erstellung und Identifizierung von Barcodes angeht, gehört sie ebenfalls zu den schnellsten Bibliotheken. Verschiedene Betriebssysteme sind mit der Bibliothek kompatibel. Es ist einfach zu entwerfen und unterstützt eine breite Palette von Barcode-Formaten. Außerdem werden verschiedene Symbole, Formate und Zeichen unterstützt.

ZXing.NET Barcode ist eine leistungsstarke Bibliothek, die Barcodes in verschiedenen Bildformaten erzeugt und erkennt. Wir können Bilder in einer Vielzahl von Formaten lesen und erstellen. Mit ZXing.NET können Sie auch das Erscheinungsbild eines Barcodes ändern, indem Sie seine Höhe, Breite, den Barcodetext und so weiter verändern.

Im Vergleich zu ZXing.NET bieten die IronBarcode-Pakete eine zuverlässige Lizenzierung und Unterstützung. IronBarcode kostet $749. Obwohl ZXing kostenlos ist, bietet es keine Möglichkeit zur kommerziellen Nutzung und es fehlt auch ein allgegenwärtiger Support. IronBarcode for .NET ist nicht nur flexibler als ZXing.NET, sondern bietet auch mehr Funktionalität. Daher ist IronBarcode gegenüber ZXing.NET eindeutig im Vorteil.

Beim Vergleich der Verarbeitungszeiten für das Erkennen und Generieren von Barcodes übertrifft IronBarcode ZXing.NET. IronBarcode hat auch mehrere Eigenschaften, die es uns ermöglichen, Barcodes aus verschiedenen Bildformaten und PDF-Dokumenten zu lesen. Außerdem können wir damit Bilder in den Barcode oder QR-Code einfügen, was in keiner anderen Bibliothek möglich ist.

IronBarcode ist in der frühen Entwicklungsphase kostenlos. Sie können eine kostenloser Test für die Produktion oder die gewerbliche Nutzung. Je nach den Anforderungen des Entwicklers bietet IronBarcode drei Preisstufen an. Sie können die Lösung wählen, die Ihren Anforderungen am besten gerecht wird. Sie können jetzt eine Suite von fünf Iron Software Produkten zum Preis von zwei Iron Software Produkten erhalten. Besuchen Sie diese website für weitere Informationen.

< PREVIOUS
Ein Vergleich zwischen ZXing Decoder und IronBarcode
NÄCHSTES >
Ein Vergleich zwischen IronBarcode und Aspose.Barcode

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 1,246,703 Lizenzen anzeigen >