using IronBarCode;
using System.Drawing;
// Reading a barcode is easy with IronBarcode!
var resultFromFile = BarcodeReader.Read(@"file/barcode.png"); // From a file
var resultFromBitMap = BarcodeReader.Read(new Bitmap("barcode.bmp")); // From a bitmap
var resultFromImage = BarcodeReader.Read(Image.FromFile("barcode.jpg")); // From an image
var resultFromPdf = BarcodeReader.ReadPdf(@"file/mydocument.pdf"); // From PDF use ReadPdf
// To configure and fine-tune barcode reading, utilize the BarcodeReaderOptions class
var myOptionsExample = new BarcodeReaderOptions
{
// Choose a reading speed from: Faster, Balanced, Detailed, ExtremeDetail
// There is a tradeoff in performance as more detail is set
Speed = ReadingSpeed.Balanced,
// Reader will stop scanning once a single barcode is found (if set to true)
ExpectMultipleBarcodes = true,
// By default, all barcode formats are scanned for
// Specifying a subset of barcode types to search for would improve performance
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional,
// Utilize multiple threads to read barcodes from multiple images in parallel
Multithreaded = true,
// Maximum threads for parallelized barcode reading
// Default is 4
MaxParallelThreads = 2,
// The area of each image frame in which to scan for barcodes
// Specifying a crop area will significantly improve performance and avoid noisy parts of the image
CropArea = new Rectangle(),
// Special setting for Code39 barcodes
// If a Code39 barcode is detected, try to read with both the base and extended ASCII character sets
UseCode39ExtendedMode = true
};
// Read with the options applied
var results = BarcodeReader.Read("barcode.png", myOptionsExample);
// Create a barcode with one line of code
var myBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.EAN8);
// After creating a barcode, we may choose to resize
myBarcode.ResizeTo(400, 100);
// Save our newly-created barcode as an image
myBarcode.SaveAsImage("EAN8.jpeg");
Image myBarcodeImage = myBarcode.Image; // Can be used as Image
Bitmap myBarcodeBitmap = myBarcode.ToBitmap(); // Can be used as Bitmap
In diesem Tutorial werden wir zwei weit verbreitete C#-Bibliotheken - IronBarcode und QrCoder - für die Arbeit mit QR-Codes und Barcodes vergleichen.
Beginnen wir mit einer kurzen Einführung in beide Bibliotheken:
IronBarcode
IronBarcode ist eine von Iron Software entwickelte und gepflegte Bibliothek, die es C#-Softwareentwicklern ermöglicht, Barcodes und QR-Codes in .NET-Anwendungen und Websites zu lesen und zu schreiben. Es ist auf NuGet für alle .NET-Frameworks und .NET Core Frameworks verfügbar. IronBarcode benötigt nur eine Zeile Code, um Barcodes zu lesen oder zu schreiben.
QrCoder
QRCoder ist eine einfache C#-Bibliothek, mit der Sie QR-Codes erstellen können. Es hat keine Abhängigkeiten von anderen Bibliotheken und ist auf NuGet in .NET-Framework und .NET Core PCL Versionen verfügbar.
Beide Bibliotheken sollten die folgenden Hauptmerkmale aufweisen:
QR-Code scannen
Barcode scannen
QR-Code generieren
Barcode generieren
Wir werden alle diese Funktionen aus beiden Bibliotheken implementieren und ihre Leistung vergleichen.
Installieren wir zunächst beide Bibliotheken in unserem Visual Studio-Projekt. Da beide Bibliotheken ihre eigenen NuGet-Pakete haben, werden wir sie über die NuGet Package Manager Console installieren.
IronBarcode installieren
Um IronBarcode zu installieren, geben Sie den folgenden Befehl in der Paketmanager-Konsole ein:
Install-Package BarCode
Dadurch wird die IronBarcode-Bibliothek in unserem Projekt installiert.
Installation von IronBarcode
QrCoder installieren
Geben Sie in der Paketmanager-Konsole den folgenden Befehl ein
Install-Package QRCoder
Dadurch wird die QrCoder-Bibliothek in unserem Projekt installiert.
Installation von QrCoder
Jetzt werden wir unseren ersten QR-Code mit beiden Bibliotheken erzeugen.
QR-Codes mit IronBarcode generieren
Der folgende Code erzeugt einen QR-Code.
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
var qrCode = QRCodeWriter.CreateQrCode("Iron Barcode Vs QrCoder");
qrCode.SaveAsPng(@"D:\Barcode Images\QrCodeByIronBarcode");
stopwatch.Stop();
Console.WriteLine($"Execution Time: {stopwatch.ElapsedMilliseconds} ms");
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
var qrCode = QRCodeWriter.CreateQrCode("Iron Barcode Vs QrCoder");
qrCode.SaveAsPng(@"D:\Barcode Images\QrCodeByIronBarcode");
stopwatch.Stop();
Console.WriteLine($"Execution Time: {stopwatch.ElapsedMilliseconds} ms");
Dim stopwatch As New Stopwatch()
stopwatch.Start()
Dim qrCode = QRCodeWriter.CreateQrCode("Iron Barcode Vs QrCoder")
qrCode.SaveAsPng("D:\Barcode Images\QrCodeByIronBarcode")
stopwatch.Stop()
Console.WriteLine($"Execution Time: {stopwatch.ElapsedMilliseconds} ms")
$vbLabelText $csharpLabel
Die Instanz Stopwatch wird erstellt, um die Ausführungszeit des Programms zu messen und die Effizienz der Bibliothek zu analysieren.
Generierter Barcode von IronBarcode
IronBarcode's Ausführungszeit
IronBarcode benötigt 3503 ms zum Erzeugen und Speichern eines QR-Codes.
IronBarcode's Ausführungszeit für die Erzeugung neuer Barcodes
Erstellen Sie einen QR-Code mit QRCoder
Der folgende Beispielcode erzeugt einen QR-Code mit QrCoder.
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode("Iron Barcode Vs QrCoder", QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
qrCodeImage.Save(@"D:\Barcode Images\QrCodeByQrCoder.png");
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode("Iron Barcode Vs QrCoder", QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
qrCodeImage.Save(@"D:\Barcode Images\QrCodeByQrCoder.png");
Dim qrGenerator As New QRCodeGenerator()
Dim qrCodeData As QRCodeData = qrGenerator.CreateQrCode("Iron Barcode Vs QrCoder", QRCodeGenerator.ECCLevel.Q)
Dim qrCode As New QRCode(qrCodeData)
Dim qrCodeImage As Bitmap = qrCode.GetGraphic(20)
qrCodeImage.Save("D:\Barcode Images\QrCodeByQrCoder.png")
$vbLabelText $csharpLabel
QrCoder bietet keine eingebaute Funktion, um den QR-Code als Bild zu speichern. Wir können es jedoch speichern, indem wir den QrCoder in ein Bitmap-Objekt parsen. Anschließend können wir den QR-Code mit der von Bitmap bereitgestellten Speicherfunktion speichern.
Der von QrCoder erzeugte Barcode
Qrcoder's Ausführungszeit
QrCoder benötigt 592 ms zum Erzeugen und Speichern eines QR-Codes.
Die Zeit, die QrCoder benötigt hat, um einen neuen Barcode zu erzeugen
Analyse
Die Ausführungszeit von IronBarcode beträgt 3503 ms, während QrCoder nur 592 ms benötigt. Das macht QrCoder leistungsfähiger als IronBarcode.
Die Erzeugung von QR-Codes ist in IronBarcode viel einfacher, da wir nur zwei Codezeilen schreiben müssen. Mit der QrCoder-Bibliothek sind dafür fünf Zeilen Code erforderlich.
IronBarcode bietet auch eine eingebaute Funktion, um generierte QR-Codes in einer Datei zu speichern, während QrCoder dies nicht tut. Wir müssen ein Bitmap-Objekt erstellen, um den QR-Code in einer Datei zu speichern. Dazu müssen wir vier Objekte erstellen, um QR-Codes mit QrCoder zu erzeugen. Wir brauchen nur ein Objekt in IronBarcode zu erstellen, um das Gleiche zu tun.
Als nächstes werden wir mit beiden Bibliotheken Strichcodes erzeugen.
Erzeugen eines Barcodes mit IronBarcode
Der folgende Code erzeugt einen Barcode mit IronBarcode:
var barcode = BarcodeWriter.CreateBarcode("Iron Barcode Vs QrCoder", BarcodeEncoding.Code128);
barcode.SaveAsPng(@"D:\Barcode Images\BarcodeByIronBarcode.png");
var barcode = BarcodeWriter.CreateBarcode("Iron Barcode Vs QrCoder", BarcodeEncoding.Code128);
barcode.SaveAsPng(@"D:\Barcode Images\BarcodeByIronBarcode.png");
Dim barcode = BarcodeWriter.CreateBarcode("Iron Barcode Vs QrCoder", BarcodeEncoding.Code128)
barcode.SaveAsPng("D:\Barcode Images\BarcodeByIronBarcode.png")
$vbLabelText $csharpLabel
Erstellter Barcode mit IronBarcode
Die Ausführungszeit für die Erstellung eines Barcodes mit IronBarcode ist unten angegeben:
IronBarcode's Barcode-Erzeugungszeit
Es dauert 3756 ms oder 3,76 Sekunden, um einen Barcode zu erzeugen.
Erzeugen Sie einen Barcode mit QrCoder
Es ist erwähnenswert, dass die QrCoder-Bibliothek keine Funktionalität zur Erstellung von Barcodes bietet. Wenn Sie also Strichcodes erstellen müssen, ist IronBarcode die bessere Wahl.
Was das Scannen von QR-Codes angeht, so wollen wir sehen, welche Bibliothek die beste Option ist.
Lesen eines QR-Codes mit IronBarcode
Der folgende Code liest einen QR-Code mit IronBarcode.
BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\QrcodeByIronBarcode.png");
if (results != null)
{
foreach (BarcodeResult result in results)
{
Console.WriteLine("Extracted text from QR Code is: "+result.Text);
}
}
BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\QrcodeByIronBarcode.png");
if (results != null)
{
foreach (BarcodeResult result in results)
{
Console.WriteLine("Extracted text from QR Code is: "+result.Text);
}
}
Dim results As BarcodeResults = BarcodeReader.Read("D:\Barcode Images\QrcodeByIronBarcode.png")
If results IsNot Nothing Then
For Each result As BarcodeResult In results
Console.WriteLine("Extracted text from QR Code is: " & result.Text)
Next result
End If
$vbLabelText $csharpLabel
IronBarcode gibt als Ergebnis des Lesens von QR-Codes ein "Enumerable" zurück. Wir müssen eine Schleife durch die "Enumerable" ziehen, um jedes Ergebnis abzurufen. Diese Funktion ist vorteilhaft für das Lesen von QR-Codes aus einem Dokument oder aus einem Bild, das mehr als einen QR-Code enthält.
Die Zeit, die IronBarcode zum Lesen/Scannen aller QR-Codes eines Dokuments benötigt
Mit IronBarcode dauert es 3136 ms oder 3,1 Sekunden.
Lesen eines QR-Codes mit QrCoder
Die QrCoder Library bietet keine Funktionalität zum Lesen oder Scannen eines QR Codes.
Lesen eines Barcodes mit IronBarcode
Der folgende Code scannt den Barcode mit IronBarcode.
BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\BarcodeByIronBarcode.png");
if (results != null)
{
foreach (BarcodeResult result in results)
{
Console.WriteLine("Text Extracted from Barcode is: " + result.Text);
}
}
BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\BarcodeByIronBarcode.png");
if (results != null)
{
foreach (BarcodeResult result in results)
{
Console.WriteLine("Text Extracted from Barcode is: " + result.Text);
}
}
Dim results As BarcodeResults = BarcodeReader.Read("D:\Barcode Images\BarcodeByIronBarcode.png")
If results IsNot Nothing Then
For Each result As BarcodeResult In results
Console.WriteLine("Text Extracted from Barcode is: " & result.Text)
Next result
End If
$vbLabelText $csharpLabel
IronBarcode liefert Enumerable als Ergebnis des Lesens von Barcodes. Wir müssen sie in einer Schleife durchlaufen, um jedes Ergebnis zu erhalten. Es ist vorteilhaft für das Lesen von Barcode aus einem Dokument oder Bild, die mehr als ein Barcode haben.
Die durch den obigen Code erzeugte Ausgabe ist wie folgt:
Die Zeit, die IronBarcode zum Scannen eines Barcodes in einer PDF-Datei oder in einem Bild benötigt
Lesen eines Barcodes mit QrCoder
QrCoder Library bietet nicht die Funktionalität des Lesens oder Scannens von QR Codes.
Lassen Sie uns nun die Lizenzoptionen der beiden Bibliotheken besprechen.
Lizenzvergabe
Lizenzierung für IronBarcode
IronBarcode ist für Entwickler kostenlos. Für den Einsatz außerhalb der Visual Studio-Entwicklungsumgebung ist jedoch eine Lizenz erforderlich. Lizenzpreise von $749 bis $2999(USD). Sie können einen Rabatt erhalten, wenn Sie die kompletteIron Suite.
Auf der [Lizenzierungsseite] von IronBarcode (/csharp/barcode/licensing/) finden Sie weitere Informationen über verfügbare Lizenzen.
Lizenzierung für QrCoder
QrCoder ist Open Source und erfordert daher keine Lizenzierung. Es steht Ihnen frei, es in jeder Art von Umgebung zu verwenden. Sie können auch zu seinem Quellcode beitragen, wenn Sie die Open-Source-Entwicklung mögen.
Wann Sie QrCoder verwenden sollten
Wenn wir nur die Funktionalität der Erzeugung von QR-Codes benötigen, ist QRCoder die beste Option, da es kostenlos ist und keine Zahlungen oder Abonnementgebühren erfordert.
Wann sollte IronBarcode verwendet werden?
IronBarcode ist eine großartige Option, wenn wir Funktionen benötigen, die über die Erzeugung von QR-Codes hinausgehen, wie z. B.:
Lesen einzelner oder mehrerer Barcodes und QR-Codes aus Bildern oder PDFs.
Bildkorrektur für Schräglage, Ausrichtung, Rauschen, geringe Auflösung, Kontrast usw.
Erstellen von Strichcodes und deren Anwendung auf Bilder oder PDF-Dokumente.
Barcodes in HTML-Dokumente einbetten.
Gestaltung von Strichcodes und Hinzufügen von Kommentartext.
QR-Code-Schreiben, das das Hinzufügen von Logos, Farben und die erweiterte QR-Ausrichtung ermöglicht.
Zusammenfassung
In der folgenden Tabelle werden IronBarcode und QrCoder miteinander verglichen.
Vergleich von IronBarcode und QrCoder Seite an Seite
Schlussfolgerung
IronBarcode for .NET ermöglicht Entwicklern das Lesen und Schreiben von Barcodes und QR-Codes in ihren .NET-Anwendungen mit nur einer Codezeile. Die Bibliothek unterstützt die meisten Barcode- und QR-Code-Standards, einschließlich 39/93/128, UPC A/E, EAN 8/13 und QR, unter anderem. Die Bibliothek verarbeitet Barcode-Bilder automatisch vor und bietet Korrekturen für Drehung, Rauschen, Verzerrung und Schräglage, um Geschwindigkeit und Genauigkeit zu verbessern. IronBarcode ist kompatibel mit 32- und 64-Bit-Systemen, allen .NET-Sprachen und einer Vielzahl von Plattformen, einschließlich Desktop-, Konsolen-, Cloud-, Mobil- und Webanwendungen. Außerdem können Entwickler Barcodes und QR-Codes für PDF-, JPG-, TIFF-, GIF-, BMP-, PNG- und HTML-Dokumente schreiben und Textfarbe, -größe, -drehung und -qualität ändern. Die Bibliothek ist sicher und nutzt keine Webdienste und sendet keine Daten über das Internet. IronBarcode kann kostenlos getestet werden und bietet drei Lizenzierungsoptionen, darunter eine Lite-Version für die individuelle Nutzung, ein Professional-Paket für Teams von bis zu 10 Entwicklern und ein Unbegrenztes Paket für Unternehmen.
QRCoder ist eine C# .NET Bibliothek, die QR-Codes basierend auf ISO/IEC 18004 ohne Abhängigkeiten von anderen Bibliotheken erzeugt. Es bietet mehrere QR-Code-Rendering-Klassen, darunter QRCode, ArtQRCode, AsciiQRCode und andere. Allerdings sind nicht alle Renderer auf allen Zielframeworks verfügbar, und die Versionen .NET-Standard/.NET >=5.0 haben einige Einschränkungen. QRCoder ist kostenlos und erfordert keine Lizenzierung.
IronBarcode ist vielseitiger als QRCoder, da es alle Versionen des .NET-Frameworks unterstützt, einen größeren Funktionsumfang hat und SaaS- und OEM-Redistribution abdeckt. IronBarcode bietet außerdem eine umfassende Dokumentation und 24/7-Support, während QRCoder dies nicht tut. IronBarcode ist zwar lizenzpflichtig, aber in Anbetracht des Funktionsumfangs und der Unterstützung, die es bietet, angemessen.
IronBarcode ist eine Bibliothek, die vonIron Softwaredie auch andere nützliche Bibliotheken bietet, darunterIronPDF, IronXL, IronOCRundIronWebScraper. Kaufen Sie die vollständigeIron Suite um alle fünf Produkte mit einem bemerkenswerten Rabatt zu erhalten.
Zusammenfassend lässt sich sagen, dass IronBarcode am besten für diejenigen geeignet ist, die sowohl mit Barcodes als auch mit QR-Codes arbeiten und einen Barcode-Generator, QR-Code-Generator, Barcode-Leser und QR-Code-Leser erstellen möchten. Andererseits ist QRCoder für diejenigen geeignet, die nur einen QR-Code-Generator erstellen wollen.
Regan schloss sein Studium an der University of Reading mit einem BA in Elektrotechnik ab. Bevor er zu Iron Software kam, konzentrierte er sich in seinen früheren Jobs auf einzelne Aufgaben. Was ihm bei Iron Software am meisten Spaß macht, ist das Spektrum der Aufgaben, die er übernehmen kann, sei es im Vertrieb, im technischen Support, in der Produktentwicklung oder im Marketing. Es macht ihm Spaß, die Art und Weise zu verstehen, wie Entwickler die Bibliothek von Iron Software nutzen, und dieses Wissen zu nutzen, um die Dokumentation und die Produkte kontinuierlich zu verbessern.
< PREVIOUS ZXing.org QR-Code-Bibliothek und IronBarcode: Ein umfassender Vergleich
NÄCHSTES > Ein Vergleich zwischen ZXing Decoder und IronBarcode