Barcodes in C# lesen

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

von Frank Walker

IronBarcode for .NET bietet eine vielseitige, fortschrittliche und effiziente Bibliothek zum Lesen von Barcodes in .NET.

Einrichtung

Beginnen Sie noch heute mit der Verwendung von IronBarcode in Ihrem Projekt mit einer kostenlosen Testversion.

Erster Schritt:
green arrow pointer

IronBarcode for .NET bietet eine vielseitige, fortschrittliche und effiziente Bibliothek zum Lesen von Barcodes in .NET.

Der erste Schritt besteht darin, Iron Barcode zu installieren. Dies ist am einfachsten mit unserem NuGet-Paket möglich, Sie können aber auch das DLL in Ihr Projekt oder in Ihren globalen Assembly-Cache. IronBarcode funktioniert gut, um eine C# Barcode Scanner Anwendung zu erstellen.

Install-Package BarCode

Lesen Sie Ihren ersten Barcode

Das Lesen eines Barcodes oder QR-Codes in .NET ist mit der IronBarcode-Klassenbibliothek und dem .NET Barcode Reader unglaublich einfach. In unserem ersten Beispiel können wir sehen, wie man diesen Barcode mit einer Zeile Code liest.

Code128 Barcode Bild zu scannen mit C#

Wir können seinen Wert, sein Bild, seinen Kodierungstyp und seine Binärdaten extrahieren(wenn überhaupt)und wir können das dann auf der Konsole ausgeben.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-1.cs
using IronBarCode;
using System;

// Read barcode
BarcodeResults results = BarcodeReader.Read("GetStarted.png");

// Log the result to Console Window
foreach (BarcodeResult result in results)
{
    if (result != null)
    {
        Console.WriteLine("GetStarted was a success. Read Value: " + result.Text);
    }
}
Imports IronBarCode
Imports System

' Read barcode
Private results As BarcodeResults = BarcodeReader.Read("GetStarted.png")

' Log the result to Console Window
For Each result As BarcodeResult In results
	If result IsNot Nothing Then
		Console.WriteLine("GetStarted was a success. Read Value: " & result.Text)
	End If
Next result
VB   C#

Strengen Sie sich an und seien Sie spezifisch

Im nächsten Beispiel werden wir eine Barcode-Scan-Option hinzufügen, um ein anspruchsvolles Bild zu lesen. Der ExtremeDetail-Wert des Speed-Enums ermöglicht eine tiefere Erkennung eines Barcodes, der möglicherweise verdeckt, beschädigt oder in einem schrägen Winkel ist.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-2.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose a speed from: Faster, Balanced, Detailed, ExtremeDetail
    // There is a tradeoff in performance as more Detail is set
    Speed = ReadingSpeed.ExtremeDetail,

    // By default, all barcode formats are scanned for.
    // Specifying one or more, performance will increase.
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
};

// Read barcode
BarcodeResults results = BarcodeReader.Read("TryHarderQR.png", options);
Imports IronBarCode

Private options As New BarcodeReaderOptions() With {
	.Speed = ReadingSpeed.ExtremeDetail,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}

' Read barcode
Private results As BarcodeResults = BarcodeReader.Read("TryHarderQR.png", options)
VB   C#

Die diesen schiefen QR-Code lesen wird:

Scannen eines um 45 Grad gedrehten QR-Codes mit C#

In unserem Beispiel können Sie sehen, dass wir die Barcode-Kodierung angeben können(s)wir suchen nach einem oder sogar mehreren Formaten. Dadurch wird die Leistung und Genauigkeit beim Lesen von Barcodes erheblich verbessert. Die pipe character, or 'Bitwise OR,' is used to specify multiple formats simultaneously.

Das Gleiche kann erreicht werden, aber mit einem höheren Maß an Spezifität, wenn wir voranschreiten und die Eigenschaften ImageFilters und AutoRotate verwenden.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-3.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection() {
        new AdaptiveThresholdFilter(),
    },

    // Uses machine learning to auto rotate the barcode
    AutoRotate = true,
};

// Read barcode
BarcodeResults results = BarcodeReader.Read("TryHarderQR.png", options);
Imports IronBarCode

Private options As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection() From {New AdaptiveThresholdFilter()},
	.AutoRotate = True
}

' Read barcode
Private results As BarcodeResults = BarcodeReader.Read("TryHarderQR.png", options)
VB   C#

Mehrere Barcodes lesen

PDF-Dokumente

In unserem nächsten Beispiel werden wir uns das Lesen einergescanntes PDF-Dokument und finden Sie alle Strichcodes im eindimensionalen Format in nur wenigen Codezeilen.

Wie Sie sehen können, ist es sehr ähnlich wie das Lesen eines einzelnen Strichcodes aus einem einzelnen Dokument, außer dass wir jetzt neue Informationen darüber haben, auf welcher Seitennummer der Strichcode gefunden wurde.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-4.cs
using IronBarCode;
using System;

// Multiple barcodes may be scanned up from a single document or image. A PDF document may also used as the input image
BarcodeResults results = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");

// Work with the results
foreach (var pageResult in results)
{
    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

' Multiple barcodes may be scanned up from a single document or image. A PDF document may also used as the input image
Private results As BarcodeResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf")

' Work with the results
For Each pageResult In results
	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#

Wir finden die folgenden Barcodes auf verschiedenen Seiten.

C# - Lesen von Barcodes aus einem PDF-Ergebnis

Scannt TIFFs

In unserem nächsten Beispiel können wir sehen, dass dasselbe Ergebnis aus einem mehrseitigen TIFF erzielt werden kann, das in diesem Kontext ähnlich wie ein PDF behandelt wird.

C# - Lesen von Barcodes aus einem Multi-Frame TIFF-Bild
:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-5.cs
using IronBarCode;

// Multi frame TIFF and GIF images can also be scanned
BarcodeResults multiFrameResults = BarcodeReader.Read("Multiframe.tiff");

foreach (var pageResult in multiFrameResults)
{
    //...
}
Imports IronBarCode

' Multi frame TIFF and GIF images can also be scanned
Private multiFrameResults As BarcodeResults = BarcodeReader.Read("Multiframe.tiff")

For Each pageResult In multiFrameResults
	'...
Next pageResult
VB   C#

Multithreading

Um mehrere Dokumente zu lesen, können wir bessere Ergebnisse von IronBarcode erzielen, indem wir eine Liste der Dokumente erstellen und die BarcodeReader.Read methode. Dies nutzt mehrere Threads und möglicherweise alle Kerne Ihrer CPU für den Barcode-Scanvorgang und kann exponentiell schneller sein als das Lesen von Barcodes nacheinander.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-6.cs
using IronBarCode;

// The Multithreaded property allows for faster barcode scanning across multiple images or PDFs. All threads are automatically managed by IronBarCode.
var ListOfDocuments = new[] { "image1.png", "image2.JPG", "image3.pdf" };

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Enable multithreading
    Multithreaded = true,
};

BarcodeResults batchResults = BarcodeReader.Read(ListOfDocuments, options);
Imports IronBarCode

' The Multithreaded property allows for faster barcode scanning across multiple images or PDFs. All threads are automatically managed by IronBarCode.
Private ListOfDocuments = { "image1.png", "image2.JPG", "image3.pdf" }

Private options As New BarcodeReaderOptions() With {.Multithreaded = True}

Private batchResults As BarcodeResults = BarcodeReader.Read(ListOfDocuments, options)
VB   C#

Zusammenfassung

Zusammenfassend ist IronBarcode eine vielseitige .NET-Softwarebibliothek und ein C# QR-Code-Generator, der in der Lage ist, eine Vielzahl von Barcode-Formaten zu lesen. Es kann dies unabhängig davon tun, ob die Barcodes perfekte Bildschirmaufnahmen oder unvollständige Bilder aus der realen Welt sind, wie Fotografien oder Scans.

Weitere Lektüre

Um mehr über die Arbeit mit IronBarcode zu erfahren, sollten Sie die anderen Tutorials in diesem Abschnitt sowie die Beispiele auf unserer Homepage erkunden, die für die meisten Entwickler ausreichend sind, um loszulegen.

UnserAPI-Referenz, insbesondere die BarcodeReader-Klasse und das BarcodeEncoding-Enum, bieten detaillierte Informationen darüber, was Sie mit dieser C#-Barcode-Bibliothek erreichen können.

Quellcode-Downloads

Wir empfehlen Ihnen außerdem, dieses Tutorial herunterzuladen und es selbst auszuführen. Sie können dies tun, indem Sie den Quellcode herunterladen oder uns auf GitHub forken. Die Quelle für dieses .NET Barcode-Reader-Tutorial steht als Visual Studio 2017 Konsolenanwendungsprojekt zur Verfügung, das in C# geschrieben ist.

.NET Software Engineer Für viele ist dies der effizienteste Weg, PDF-Dateien aus .NET zu generieren, da keine zusätzliche API erlernt werden muss oder ein komplexes Designsystem zu navigieren ist

Frank Walker

.NET Produktentwickler

Frank war eine treibende Kraft bei der Entwicklung von IronBarcode. Durch seine Zusammenarbeit mit IronOCR im letzten Jahr war Frank maßgeblich an der Entwicklung von Anwendungsfällen innerhalb der OCR beteiligt, die IronBarcode zu dem Tool gemacht haben, das es heute ist.