在C#中读取条形码
IronBarcode 提供了一种多功能的、先进的且高效的库,用于在 .NET 中读取条形码。
如何在 C# 和 VB.NET 中读取条形码
- 从 NuGet 或通过 DLL 下载安装 IronBarcode
- 使用
BarcodeReader.Read
方法来读取任何条形码或 QR - 在一次扫描中读取多个条形码或 QR、PDF 或多帧 Tiff 文件
- 允许 IronBarcode 从不完美的扫描件和照片中读取数据
- 下载教程项目并立即开始扫描
安装
立即在您的项目中开始使用IronBarcode,并享受免费试用。
IronBarcode 提供了一种多功能的、先进的且高效的库,用于在 .NET 中读取条形码。
第一步是安装IronBarcode,最简单的方法是使用我们的NuGet包,虽然您也可以选择手动安装。 DLL 到项目或全局程序集缓存中。 IronBarcode可以很好地生成一个C#条形码扫描器应用程序。
Install-Package BarCode
读取您的第一个条形码
在 .NET 中使用 IronBarcode 类库与 .NET Barcode Reader 读取条形码或二维码变得非常简单。 在我们的第一个例子中,我们可以看到如何用一行代码读取这个Barcode。
我们可以提取其值、图像、编码类型、二进制数据(如有)然后我们就可以将其输出到控制台。
: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
努力加油并具体说明
在下一个示例中,我们将添加条形码扫描选项以读取复杂的图像。 Speed枚举的ExtremeDetail值允许更深入地扫描可能被遮挡、损坏或处于倾斜角度的条形码。
: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)
它将读取这个倾斜的 QR 码:
在我们的示例中,您可以看到我们可以指定条形码编码(s)我们正在寻找一种或多种格式。 这样做极大地提高了条形码读取的性能和准确性。 "(《世界人权宣言》) pipe character, or 'Bitwise OR,' is used to specify multiple formats simultaneously.
如果我们继续并使用ImageFilters和AutoRotate属性,可以实现相同的效果,但具有更高的特定性。
: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)
读取多个条形码
PDF 文档
在下一个示例中,我们将查看读取一个扫描的 PDF 文件并在极少行代码中找到所有一维格式的条形码。
正如您所看到的,这与从单个文档中读取单个条形码非常相似,只不过我们现在有了关于条形码所在页码的新信息。
: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
我们在不同的页面上发现了以下条形码。
扫描TIFF文件
在下一个示例中,我们可以看到,同样的结果可以通过多帧TIFF获得,在此情况下将类似于PDF进行处理。
: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
多线程
要读取多个文档,我们可以通过创建文档列表并使用IronBarcode来获得更好的结果。 BarcodeReader.Read
方法。 这利用了多线程以及您CPU的所有核心进行条形码扫描过程,相比一次读取一个条码,速度可以成倍增加。
: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)
摘要
总之,IronBarcode 是一个多功能的 .NET 软件库和 C# 二维码生成器,能够读取多种条码格式。 无论条形码是完美的屏幕截图还是不完美的现实世界图像(如照片或扫描件),它都可以识别。
进一步阅读
要了解有关使用IronBarcode的更多信息,您可能希望浏览本节中的其他教程,以及我们主页上的示例,大多数开发人员会发现这些内容足以入门。
我们的API文档特别是 BarcodeReader 类和 BarcodeEncoding 枚举,将详细介绍您可以使用此 C# 条形码库 实现的功能。
源代码下载
我们也强烈建议您下载此教程并自己运行。 您可以通过下载源代码或在GitHub上fork我们来实现。 此 .NET 条形码读取器教程的源代码可作为使用 C# 编写的 Visual Studio 2017 控制台应用程序项目获取。