Barcodes in C# lesen

.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
4. November 2018
Aktualisiert 10. Dezember 2024
Teilen Sie:
This article was translated from English: Does it need improvement?
Translated
View the article in English

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, IronBarcode zu installieren, und dies gelingt am einfachsten mit unserem NuGet-Paket, obwohl Sie sich auch dafür entscheiden können, das DLL manuell in Ihr Projekt oder in den globalen Assembly-Cache zu installieren. 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 zum Scannen mit C#

Wir können seinen Wert, sein Bild, seinen Kodierungstyp, seine Binärdaten (falls vorhanden) extrahieren und dann an die 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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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-Codierung(en) angeben können, nach der oder denen wir suchen, oder sogar mehrere Formate. Dadurch wird die Leistung und Genauigkeit beim Lesen von Barcodes erheblich verbessert. Der Das Pipe-Zeichen, oder 'Bitweises OR', wird verwendet, um mehrere Formate gleichzeitig anzugeben.

Das Gleiche kann erreicht werden, jedoch mit einem höheren Grad an Spezifität, wenn wir voranschreiten und die ImageFilters und AutoRotate Eigenschaften 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)
$vbLabelText   $csharpLabel

Mehrere Barcodes lesen

PDF-Dokumente

In unserem nächsten Beispiel werden wir uns das Lesen eines gescannten PDF-Dokuments ansehen und alle eindimensionalen Barcodes mit sehr wenig Code finden.

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

MultiThreading

Um mehrere Dokumente zu lesen, können wir bessere Ergebnisse von IronBarcode erzielen, indem wir eine Liste der Dokumente erstellen und die Methode BarcodeReader.Read verwenden. 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)
$vbLabelText   $csharpLabel

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.

Unsere API-Referenz, speziell die BarcodeReader-Klasse und das BarcodeEncoding-Enum, bietet 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
.NET Produktentwickler

Frank war eine treibende Kraft bei der Entwicklung von IronBarcode. Im letzten Jahr hat Frank mit IronOCR gearbeitet und war maßgeblich daran beteiligt, Anwendungsfälle innerhalb von OCR für IronBarcode zu entwickeln, um das Tool zu dem zu machen, was es heute ist.