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
Barcodes bieten eine klare und maschinenlesbare Möglichkeit zur Darstellung von Daten. Ursprünglich bestanden Strichcodes aus parallelen Linien mit unterschiedlichen Breiten und Abständen, die zur Darstellung von Daten dienten. Diese traditionellen linearen oder eindimensionalen(1D) barcodes können mit speziellen optischen Geräten, so genannten Barcode-Lesegeräten, gescannt werden. Die Entwicklung der Strichcodes führte jedoch zur Erfindung der zweidimensionalen(2D) barcodes, auch bekannt als Matrixcodes. Im Gegensatz zu herkömmlichen Strichcodes werden bei 2D-Strichcodes Muster wie Rechtecke, Punkte und Sechsecke anstelle von Strichen verwendet. Um diese 2D-Barcodes zu lesen, gibt es spezielle optische Scanner oder alternative Methoden, bei denen eine Digitalkamera an einen Computer angeschlossen wird, auf dem eine Decodierungssoftware läuft. Außerdem können mobile Geräte wie Smartphones mit ihren integrierten Kameras und speziellen Anwendungen als 2D-Barcodescanner eingesetzt werden.
ZXing Barcode-Scanner
Zebra Crossing, oft auch als ZXing bezeichnet, ist ein Open-Source-Toolkit für die Verarbeitung von 1D/2D-Barcode-Bildern in mehreren Formaten, das in Java entwickelt wurde und über Portierungen für andere Sprachen verfügt. Die Kernbibliothek zur Bilddecodierung, der Java-spezifische Client-Code und der Android-Client Barcode-Scanner sind nur einige der Module, aus denen ZXing besteht. Zahlreiche weitere unabhängige Open-Source-Projekte bauen darauf auf.
1. Eigenschaften
Es kann URLs, Kontaktinformationen, Kalenderereignisse und vieles mehr speichern.
Es wurde mit Blick auf Java SE-Anwendungen entwickelt.
Durch den Zweck ist die Integration von Barcode-Scannern möglich.
Es handelt sich um eine einfache Google Glass-Anwendung.
2. Verwendung von ZXing mit .NET
Öffnen Sie Visual Studio, wählen Sie "Neues Projekt" aus dem Dateimenü und dann "Konsolenanwendung". In diesem Artikel entscheiden wir uns für die C#-Konsolenanwendung.
Geben Sie den Projektnamen und den Dateipfad in das entsprechende Textfeld ein. Klicken Sie anschließend auf die Schaltfläche Erstellen, um das gewünschte .NET-Framework auszuwählen.
Wenn Sie eine Konsolenanwendung ausgewählt haben, wird das Projekt nun seine Struktur erstellen und die Datei program.cs öffnen, so dass Sie den Programmcode eingeben und das Programm erstellen oder ausführen können.
2.1 ZXing Barcode installieren
Geben Sie den folgenden Befehl in die NuGet-Paketmanager-Konsole ein.
Alternativ können wir das Element auch mit dem NuGet-Paketmanager-Tool beziehen. Wie in der Abbildung unten. Versuchen Sie, das erste Ergebnis, das Sie auswählen, zu installieren.
2.2 Barcode lesen und schreiben mit ZXing
Mit dem unten stehenden Beispielcode können wir einen Barcode erstellen. Mit ZXing können wir mehr als 10 Arten von Barcode-Formaten erstellen.
using ZXing.Windows.Compatibility;
var options = new QrCodeEncodingOptions
{
Width = 250,
Height = 250,
};
var writer = new BarcodeWriter();
writer.Format= BarcodeFormat.QR_CODE;
writer.Options = options;
System.Drawing.Bitmap _bitmap=writer.Write("Hello world");
_bitmap.Save("Demo1.png");
using ZXing.Windows.Compatibility;
var options = new QrCodeEncodingOptions
{
Width = 250,
Height = 250,
};
var writer = new BarcodeWriter();
writer.Format= BarcodeFormat.QR_CODE;
writer.Options = options;
System.Drawing.Bitmap _bitmap=writer.Write("Hello world");
_bitmap.Save("Demo1.png");
Imports ZXing.Windows.Compatibility
Private options = New QrCodeEncodingOptions With {
.Width = 250,
.Height = 250
}
Private writer = New BarcodeWriter()
writer.Format= BarcodeFormat.QR_CODE
writer.Options = options
Dim _bitmap As System.Drawing.Bitmap=writer.Write("Hello world")
_bitmap.Save("Demo1.png")
$vbLabelText $csharpLabel
Oben setzen wir die Höhe und Breite für die QrCodeEncodingOptions. Dann erstellen wir ein Objekt für BarcodeWriter. Für den "BarcodeWriter" stellen wir das Barcode-Format QR_Code ein. Dann weisen wir die Option "qrcode" zu, die wir zuvor erstellt haben. Die Schreibfunktion im BarcodeWriter kodiert die angegebene Zeichenkette in einen Barcode und gibt den Barcode als Bitmap-Bild zurück. Dann können wir das Bild mit Hilfe der Speicherfunktion in der Bitmap speichern. Nachfolgend sehen Sie das Ergebnis des Codes.
using ZXing.Windows.Compatibility;
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");
var reader = new BarcodeReader();
var result = reader.Decode(barcodeBitmap);
if (result != null)
{
Console.WriteLine(result.Text);
Console.ReadKey();
}
using ZXing.Windows.Compatibility;
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");
var reader = new BarcodeReader();
var result = reader.Decode(barcodeBitmap);
if (result != null)
{
Console.WriteLine(result.Text);
Console.ReadKey();
}
Imports ZXing.Windows.Compatibility
Private barcodeBitmap = CType(System.Drawing.Bitmap.FromFile("demo.png"), System.Drawing.Bitmap)
Private reader = New BarcodeReader()
Private result = reader.Decode(barcodeBitmap)
If result IsNot Nothing Then
Console.WriteLine(result.Text)
Console.ReadKey()
End If
$vbLabelText $csharpLabel
Im obigen Code laden wir zunächst das Bild in eine Bitmap. Dann erstellen wir ein "BarcodeReader"-Objekt. Mit der Funktion "Decode" können wir eine Bitmap als Parameter übergeben, die das Ergebnis in mehreren Typen zurückgeben kann. Als nächstes verwenden wir die Eigenschaft "Text", um den im Strichcode kodierten Text zu erhalten.
IronBarcode
Mit Hilfe dieser Barcode-Bibliothek ist das Lesen und Erstellen von Barcodes ein Kinderspiel. Ein dynamischer Barcode ist mit IronBarcode's Library einfach zu erstellen. Mit nur ein paar Zeilen Code kann diese einfache Bibliothek einen Barcode erzeugen, der uns hilft, Barcode-Bilder zu kodieren. IronBarcode ermöglicht es uns, Barcodes in Sprachen wie C# und VB.NET zu erzeugen.
1. Eigenschaften
IronBarcode kann die meisten Barcode-Bildformate und QR-Standards lesen und schreiben, einschließlich UPC A/E, Databar, EAN 8/13, MSI, Code 39/93/128, CodaB, RSS 14/Expanded und ITF.
Beim Scannen von Scans und Echtzeit-Videobildern kann IronBarcode Rotation, Rauschen, Verzerrung und Schräglage korrigieren. Um die Lesegenauigkeit und -geschwindigkeit zu verbessern, verarbeitet IronBarcode die Barcode-Bilder automatisch vor, während sie erstellt werden. Dynamische Barcodes werden häufig verwendet, da sie wechselnde Inhalte zulassen.
Die Fähigkeit von IronBarcode, viele Kerne und Threads zu nutzen, ist für stapelverarbeitende Server von Vorteil.
In ein- und mehrseitigen Dokumenten kann IronBarcode automatisch einen oder mehrere Barcodes finden.
2. IronBarcode verwenden
Um die IronBarcode-Bibliothek in der Lösung zu verwenden, müssen Sie das erforderliche Paket herunterladen. Verwenden Sie dazu den Code des Paketmanagers, der im Folgenden beschrieben wird:
:PackageInstall
Alternativ können Sie auch den NuGet Package Manager verwenden, der alle Suchergebnisse anzeigt, um das "Barcode"-Paket zu suchen und herunterzuladen. Dann können Sie das erforderliche Paket auswählen, um es in das Programm herunterzuladen.
3. Lesen und Schreiben von Barcodes mit IronBarcode
Mit nur ein paar Zeilen Code können wir mit der IronBarcode-Bibliothek schnell Barcode-Bilder erstellen. Außerdem ermöglicht es uns, den erstellten Barcode als separate Bilddatei zu speichern. Hier ist ein Beispiel für Visual Basic Code zur Erstellung eines Barcode-Etiketts mit einem Konsolenprogramm.
using IronBarCode;
QRCodeWriter.CreateQrCode(textBox1.Text, 500, QRCodeWriter.QrErrorCorrectionLevel.Medium, 0).SaveAsPng("demo.png");
using IronBarCode;
QRCodeWriter.CreateQrCode(textBox1.Text, 500, QRCodeWriter.QrErrorCorrectionLevel.Medium, 0).SaveAsPng("demo.png");
Eine 500 x 500 Pixel große Grafik wird mit einer mittleren Fehlerkorrektur erstellt und anschließend mit der Methode "SaveAsPng" in einer Datei gespeichert.
Das nächste Code-Beispiel liest den Text, der im QR-Code kodiert ist, den wir im vorherigen Beispiel erstellt haben.
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");
var reader=IronBarCode.BarcodeReader.Read(barcodeBitmap);
Console.WriteLine(reader.Values()[0]);
Console.ReadKey();
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");
var reader=IronBarCode.BarcodeReader.Read(barcodeBitmap);
Console.WriteLine(reader.Values()[0]);
Console.ReadKey();
Dim barcodeBitmap = CType(System.Drawing.Bitmap.FromFile("demo.png"), System.Drawing.Bitmap)
Dim reader=IronBarCode.BarcodeReader.Read(barcodeBitmap)
Console.WriteLine(reader.Values()(0))
Console.ReadKey()
$vbLabelText $csharpLabel
Zuerst laden wir das Bild in eine Bitmap und lesen es dann mit der Methode "Read" der Klasse "BarcodeReader". Wir verwenden die Eigenschaft "Values" des Objekts "BarcodeResults", das von der Methode "Read" zurückgegeben wird, um den Inhalt zu erhalten, der aus dem QR-Code gelesen wurde.
Wenn Sie mehr über ZXing und den Vergleich mit IronBarcode erfahren möchten, lesen Sie diesnächster Blogeintrag.
UnserLesen von Barcodes das Tutorial bietet außerdem weitere Informationen darüber, wie IronBarcode zum Lesen von Barcodes und QR-Codes verwendet werden kann. Für weitere Code-Tutorials auf IronBarcode.
Schlussfolgerung
Der ZXing-Barcodescanner kann qualitativ hochwertige Barcodes erstellen, ist aber veraltet und unterstützt nur wenige Barcodeformate. Außerdem gibt es nur eine begrenzte Dokumentation und Produktunterstützung.
Andererseits ist IronBarcode sehr effizient und flexibel und kann auf vielen Betriebssystemen eingesetzt werden. IronBarcode kann die Farbe, die Größe, die Abstände und die Beschriftung von Strichcodes ändern. Es unterstützt auch Crystal Reports.
Entwickler könnenironBarcode verwenden umsonst. Die Nutzer können einelizenz um auf zusätzliche Funktionen zuzugreifen und ein ganzes Jahr lang Support und Produkt-Updates zu erhalten.
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.
NÄCHSTES > ZXing.org QR-Code-Bibliothek und IronBarcode: Ein umfassender Vergleich