构建条码SDK C#: 使用一个库生成、读取和扫描条码
大多数条形码 SDK C# 项目一开始都会遇到同样的难题:将用于生成、读取和导出的独立库拼接在一起,然后努力解决条形码类型和平台之间的兼容性问题。 IronBarcode完全消除了这种摩擦。 这是一个单一的.NET库,可以处理开发人员通常需要的专用条形码扫描器 SDK 的所有条形码操作,从创建线性条形码和二维码到从不完美的图像和 PDF 文件中扫描多个条形码。
在本文中,我们将带您了解IronBarcode 的核心功能,使其成为条形码 SDK 项目的一体化解决方案:生成条形码图像、从文件中读取条形码数据以及配置高级扫描设置以实现生产级精度。 以下每个代码示例均可在.NET控制台应用程序中直接运行。
条形码 SDK 在.NET项目中应该处理哪些内容?
一个功能强大的条形码扫描器 SDK 需要涵盖三个基本操作:生成条形码、从图像和文档中读取条形码数据以及处理实际扫描质量问题。 最好的条码阅读器 SDK 选项还支持多种条码体系,而无需为每种条码体系单独开发库。
IronBarcode支持线性条形码(Code 128、Code 39、UPC-A、UPC-E、EAN-8、EAN-13、GS1 DataBar)和二维条形码(QR Code、Data Matrix、PDF417、Aztec、MaxiCode)。 这意味着.NET开发人员可以使用单个条形码 DLL 处理从零售 UPC-A 标签到仓库 QR 码的所有内容,无需额外的依赖项,也无需特定于平台的本机二进制文件。 免费试用许可证可让您在 30 天内完全使用所有功能。
该库可在 Windows、macOS 和 Linux 操作系统上运行,并支持.NET MAUI和 Android 应用部署。 它还可以与 Crystal Reports 等报表工具集成,用于需要在业务文档中生成嵌入式条形码的场景。 无论是控制台应用程序、 .NET MAUI移动扫描器,还是处理数千张图像的服务器端条形码读取器,同一个条形码扫描器 SDK API 都能处理所有这些。
How Can Developers Generate Barcode Images in C#?
BarcodeWriter.CreateBarcode 方法通过一次调用,根据字符串值和指定的符号体系生成条形码图像。 返回的 GeneratedBarcode 对象可以保存为 PNG、BMP、JPEG、PDF、HTML 文件,或导出为 SVG 等矢量格式。
using IronBarCode;
// Generate a Code 128 barcode image from string data
var barcode = BarcodeWriter.CreateBarcode("PKG-2025-88421", BarcodeEncoding.Code128);
barcode.AddAnnotationTextAboveBarcode("Shipping Label");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.ResizeTo(500, 150);
barcode.SaveAsPng("shipping-label.png");
// Create a styled QR code with a logo
var qrCode = QRCodeWriter.CreateQrCode("https://example.com/track/88421", 300);
qrCode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkSlateGray);
qrCode.SaveAsPng("tracking-qr.png");
using IronBarCode;
// Generate a Code 128 barcode image from string data
var barcode = BarcodeWriter.CreateBarcode("PKG-2025-88421", BarcodeEncoding.Code128);
barcode.AddAnnotationTextAboveBarcode("Shipping Label");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.ResizeTo(500, 150);
barcode.SaveAsPng("shipping-label.png");
// Create a styled QR code with a logo
var qrCode = QRCodeWriter.CreateQrCode("https://example.com/track/88421", 300);
qrCode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkSlateGray);
qrCode.SaveAsPng("tracking-qr.png");
Imports IronBarCode
' Generate a Code 128 barcode image from string data
Dim barcode = BarcodeWriter.CreateBarcode("PKG-2025-88421", BarcodeEncoding.Code128)
barcode.AddAnnotationTextAboveBarcode("Shipping Label")
barcode.AddBarcodeValueTextBelowBarcode()
barcode.ResizeTo(500, 150)
barcode.SaveAsPng("shipping-label.png")
' Create a styled QR code with a logo
Dim qrCode = QRCodeWriter.CreateQrCode("https://example.com/track/88421", 300)
qrCode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkSlateGray)
qrCode.SaveAsPng("tracking-qr.png")
生成的条形码图像
构建条形码 SDK C#:使用一个库生成、读取和扫描条形码:图 1 - 输出条形码和二维码图像
BarcodeWriter 类接受字符串、字节数组或流作为数据,从而可以灵活地处理不同的数据源。 BarcodeEncoding 枚举控制符号体系,传递 BarcodeEncoding.QRCode 表示二维码,传递 BarcodeEncoding.UPCA 表示 UPC-A 零售标签,或任何受支持的条形码格式。 对于样式化的二维码,专用的 QRCodeWriter 类支持纠错级别和徽标嵌入,从而可以轻松创建品牌二维码。
GeneratedBarcode 对象还提供了自定义条形码属性(如边距、颜色和注释文本)的方法。 条形码图像可以导出为光栅图像格式(PNG、BMP、JPEG)和矢量格式,或者直接渲染为 HTML 以用于 Web 应用程序场景。 有关其他输出选项,请参阅条形码创建示例。
条形码阅读器如何读取图像和 PDF 文件?
BarcodeReader.Read 方法接受图像文件路径、字节数组、位图或流,并返回一个 BarcodeResults 集合,其中包含在输入中找到的每个条形码。 每个 BarcodeResult 都公开条形码值、编码类型、页码、二进制数据和条形码图像区域。
using IronBarCode;
// Use the barcode reader to decode all barcodes from an image file
var results = BarcodeReader.Read("multiple-barcodes.png");
foreach (var result in results)
{
Console.WriteLine($"Type: {result.BarcodeType} | Value: {result.Value}");
}
// The barcode reader also scans multi-page PDF documents
var pdfResults = BarcodeReader.ReadPdf("invoice-batch.pdf");
foreach (var item in pdfResults)
{
Console.WriteLine($"Page {item.PageNumber}: {item.Value}");
}
using IronBarCode;
// Use the barcode reader to decode all barcodes from an image file
var results = BarcodeReader.Read("multiple-barcodes.png");
foreach (var result in results)
{
Console.WriteLine($"Type: {result.BarcodeType} | Value: {result.Value}");
}
// The barcode reader also scans multi-page PDF documents
var pdfResults = BarcodeReader.ReadPdf("invoice-batch.pdf");
foreach (var item in pdfResults)
{
Console.WriteLine($"Page {item.PageNumber}: {item.Value}");
}
Imports IronBarCode
' Use the barcode reader to decode all barcodes from an image file
Dim results = BarcodeReader.Read("multiple-barcodes.png")
For Each result In results
Console.WriteLine($"Type: {result.BarcodeType} | Value: {result.Value}")
Next
' The barcode reader also scans multi-page PDF documents
Dim pdfResults = BarcodeReader.ReadPdf("invoice-batch.pdf")
For Each item In pdfResults
Console.WriteLine($"Page {item.PageNumber}: {item.Value}")
Next
读取条形码输出
构建条形码 SDK C#:使用一个库生成、读取和扫描条形码:图 2 - 读取条形码数据输出
条形码阅读器默认对所有主要条形码进行识别,自动检测线性条形码、二维条形码和二维码,而无需开发人员指定要扫描的类型。 扫描 PDF 时,ReadPdf 会处理每一页并返回带有页码的结果,非常适合文档索引和归档工作流程。
集合中的每个 BarcodeResult 都提供了对解码后的条形码数据的访问,既可以作为字符串,也可以作为字节数组。 这在处理数据矩阵码或其他对二进制数据进行编码的符号体系时尤其有用。 条形码读取器的结果还包括条形码的位置坐标,使应用程序能够映射每个条形码在源图像文件中出现的位置。要对整个文件夹中的图像进行批量处理,请将文件路径列表(IEnumerable<string>)传递给启用多线程并行执行的条形码读取器。
条码扫描器 SDK 如何处理真实世界的图像质量?
来自仓库摄像头、移动设备拍摄或扫描文档的真实条形码图像很少能做到像素完美。 BarcodeReaderOptions 类可对扫描速度、预期符号体系、图像校正滤镜和多线程批处理进行精细控制,即使在输入损坏或倾斜的情况下也能实现高度精确的条形码识别。
using IronBarCode;
// Configure the barcode reader for challenging, real-world image quality
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed,
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional | BarcodeEncoding.QRCode,
Multithreaded = true,
MaxParallelThreads = 4,
ImageFilters = new ImageFilterCollection
{
new SharpenFilter(),
new ContrastFilter()
}
};
// Scan multiple barcodes from a noisy image with high accuracy
var results = BarcodeReader.Read("camera-capture.jpg", options);
foreach (var barcode in results)
{
Console.WriteLine($"Detected: {barcode.BarcodeType} — {barcode.Value}");
}
using IronBarCode;
// Configure the barcode reader for challenging, real-world image quality
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed,
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional | BarcodeEncoding.QRCode,
Multithreaded = true,
MaxParallelThreads = 4,
ImageFilters = new ImageFilterCollection
{
new SharpenFilter(),
new ContrastFilter()
}
};
// Scan multiple barcodes from a noisy image with high accuracy
var results = BarcodeReader.Read("camera-capture.jpg", options);
foreach (var barcode in results)
{
Console.WriteLine($"Detected: {barcode.BarcodeType} — {barcode.Value}");
}
Imports IronBarCode
' Configure the barcode reader for challenging, real-world image quality
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Detailed,
.ExpectMultipleBarcodes = True,
.ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional Or BarcodeEncoding.QRCode,
.Multithreaded = True,
.MaxParallelThreads = 4,
.ImageFilters = New ImageFilterCollection From {
New SharpenFilter(),
New ContrastFilter()
}
}
' Scan multiple barcodes from a noisy image with high accuracy
Dim results = BarcodeReader.Read("camera-capture.jpg", options)
For Each barcode In results
Console.WriteLine($"Detected: {barcode.BarcodeType} — {barcode.Value}")
Next
噪声条形码图像扫描的输出
构建条形码 SDK C#:使用一个库生成、读取和扫描条形码:图 3 - 扫描噪声条形码图像的示例输出
将 ExpectBarcodeTypes 设置为特定的条码类型子集(而不是扫描所有类型)可以显著提高速度和准确性。 ReadingSpeed 枚举提供了四个级别——更快、更平衡、更详细和更精细,让开发人员可以调整处理时间和条形码识别彻底性之间的权衡。 ImageFilterCollection 在扫描引擎处理条形码图像之前,应用锐化、对比度调整和自适应阈值等预处理滤波器。
ExpectMultipleBarcodes 标志告诉引擎在找到第一个匹配项后继续扫描,这在需要扫描单个标签或文档页面上的多个条形码时至关重要。 结合 Multithreaded = true,该库可将批量处理分布到 CPU 内核上,以适应高吞吐量扫描场景。 要深入了解这些设置,读取条形码教程涵盖了每个配置选项以及示例代码。
支持哪些条形码类型和平台?
IronBarcode涵盖了零售、物流、医疗保健和Enterprise应用中最广泛使用的条形码符号体系。 下表总结了支持的条形码类型和目标平台。
| 翻译类别 | 支持的格式 |
|---|---|
| 线性条形码 | 代码 128、代码 39、代码 93、UPC-A、UPC-E、EAN-8、EAN-13、GS1 DataBar、ITF、MSI、Codabar |
| 二维条形码 | QR码、数据矩阵码、PDF417码、Aztec码、MaxiCode码 |
| 图像格式 | PNG、JPEG、BMP、GIF、TIFF、SVG |
| 文档格式 | PDF(多页)、HTML |
| .NET平台 | .NET 8/7/6、 .NET Core、 .NET Framework 4.6.2+、. .NET Standard 2.0+ |
| 应用类型 | 控制台、Windows 窗体、WPF、 ASP.NET、 .NET MAUI、 Blazor |
| 操作系统 | Windows、macOS、Linux、Android(通过.NET MAUI) |
该库可以作为单个NuGet包(BarCode) 安装,也可以通过直接下载作为独立的条形码 DLL 安装。 无需任何原生 SDK 依赖项,整个条形码扫描器 SDK 以托管的.NET代码形式提供。 可以通过NuGet包管理器在 Visual Studio 中安装,或者从 CLI 运行 dotnet add package BarCode。 对于需要 DLL 级别控制的部署方案, IronBarcode DLL 下载提供了一个 ZIP 包,可进行手动集成。
IronBarcode还支持 Crystal Reports 集成和其他需要生成嵌入式条形码的报告工具。 对于.NET MAUI和 Android 应用开发,条形码扫描器 SDK 提供跨平台条形码读取功能,无需特定于平台的相机 SDK——只需将设备相机拍摄的图像文件传递给条形码读取器即可。 .NET MAUI条形码扫描器教程详细介绍了.NET MAUI工作流程,包括 Android 权限和移动扫描的示例代码。
接下来该何去何从
IronBarcode为.NET开发人员提供了一个完整的条形码库,适用于 SDK 级别的项目,其中包含生成、读取、批量扫描和导出等功能,而无需管理多个包的复杂性。 最新版本增加了 ML 驱动的图像预处理和用于批量 PDF 处理的 ReadPdfs 方法,继续拓展单个库的功能。
立即开始免费试用,在您自己的项目中测试所有功能,无水印或限制。 当您准备好投入生产时,请探索IronBarcode 的许可选项,个人开发者可从 $799 开始,并可获得 Iron Software 工程团队的免费支持。
常见问题解答
IronBarcode在C#项目中用来干什么?
IronBarcode是一个.NET库,它通过允许开发人员在C#项目中生成、读取和扫描各种条形码类型来简化条形码操作,消除了对多个库的需求。
IronBarcode能否处理多种条形码类型?
是的,IronBarcode支持多种条形码类型,包括线性条形码和QR码,确保在不同应用程序中的兼容性。
IronBarcode如何改善C#中的条形码扫描?
IronBarcode通过提供强大的功能来扫描不完美图像和PDF文件中的多个条形码,提升了准确性和效率,从而改善了条形码扫描。
是否有可用于使用IronBarcode的示例代码?
是的,包含示例代码,帮助开发人员迅速将条形码生成和扫描功能集成到他们的C#项目中,使用IronBarcode。
为什么选择IronBarcode而不是用于条形码操作的单独库?
IronBarcode将条形码生成、读取和扫描操作整合为一个库,减少了使用多个库所带来的复杂性和兼容性问题。

