与其他组件比较

如何在ZXing中为C#开发人员扫描条形码

乔尔迪·巴尔迪亚
乔尔迪·巴尔迪亚
2023年六月21日
分享:

介绍

BarCode 提供了一种清晰且机器可读的数据呈现方式。 最初,BarCode 由宽度和间距各不相同的平行线组成,是数据的代表。 这些传统的线性或一维 (1D) 条形码可以通过称为条形码读取器的专业光学设备扫描。 然而,条形码的发展导致了二维(2D)条形码的发明,也称为矩阵码。 与传统条形码不同,二维条形码利用矩形、点和六边形等图案代替条形。 要读取这些二维 BarCode,可以使用特定的光学扫描仪,或者使用连接到运行解码软件的计算机上的数码相机。 此外,智能手机等移动设备可以利用其集成的摄像头和专用应用程序来充当二维条形码扫描仪。

ZXing 条码扫描器

Zebra Crossing 通常被称为 ZXing,是一个开源的多格式一维/二维条形码图像处理工具包,使用 Java 开发,并有其他语言的移植版本。 核心图像解码库、Java 特定客户端代码和 Android 客户端 BarCode Scanner 只是组成 ZXing 的几个模块。 在它的基础上还构建了许多独立的开源项目。

1.译文特点

  • 它可以跟踪 URL、联系信息、日历事件等。
  • 翻译时要考虑到 Java SE 应用程序。
  • 通过目的,可以集成 BarCode。
  • 这是一个简单的谷歌眼镜应用程序。

2.将 ZXing 与 .NET 结合使用

打开 Visual Studio,从文件菜单中选择 "新建项目",然后选择 "控制台应用程序"。 在本文中,我们选择 C# 控制台应用程序。

如何在ZXing中扫描条形码——C#开发者指南 图1

在相应的文本框中输入项目名称和文件路径。 接下来,单击 "创建 "按钮,选择所需的 .NET Framework。

如果您选择的是控制台应用程序,项目现在将创建其结构并打开 program.cs 文件,允许您输入程序代码并构建或执行它。

如何在ZXing中扫描条形码——适用于C#开发人员 图2

2.1 安装 ZXing BarCode

在 NuGet 软件包管理器控制台中输入下一条命令。

Install-Package ZXing.Net.Bindings.Windows.Compatibility

另外,我们也可以使用 NuGet 软件包管理器工具获取该项目。 如下图所示。 请尝试安装您选择的第一个结果。

如何在 ZXing 中为 C# 开发者扫描条形码 图 3

2.2 使用 ZXing 读写 BarCode

我们能够使用以下示例代码创建一个 BarCode。 ZXing 允许我们创建 10 多种条形码格式。

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

在上面,我们为QrCodeEncodingOptions设置了高度和宽度。 然后我们为BarcodeWriter创建一个对象。 对于BarcodeWriter,我们将条码格式设置为QR_Code。 然后我们分配之前创建的qrcode选项。 BarcodeWriter中的write函数将给定的字符串编码成条形码,并将条形码作为位图图像返回。 然后,借助位图中的保存功能,我们可以保存图像。 以下是代码的结果。

如何在ZXing中扫描条形码为C#开发者图4


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

在上面的代码中,我们首先将图像加载到一个位图中。然后,我们创建一个BarcodeReader对象。 Decode函数允许我们将位图作为参数传递,可以将结果返回为多种类型。接下来,我们使用Text属性来获取条形码中编码的文本。

ZXing 条码扫描在 C# 开发者中的应用图 5

IronBarcode

在该条形码库的帮助下,读取和创建条形码变得简单明了。 使用 IronBarcode 的 Library 可轻松制作动态条码。 只需几行代码,这个简单的库就能生成条形码,帮助我们对条形码图像进行编码。 IronBarcode 使我们能够用 C# 和 VB.NET 等语言生成条形码。

1.译文特点

  • IronBarcode 可以读写大多数条码图像格式和 QR 标准,包括 UPC A/E、Databar、EAN 8/13、MSI、Code 39/93/128、CodaB、RSS 14/Expanded 和 ITF。
  • 在扫描扫描和实时视频帧时,IronBarcode 可以纠正旋转、噪音、失真和倾斜。 为了提高读取准确性和速度,IronBarcode 在创建条码图像时自动对其进行预处理。 动态 BarCode 允许更改内容,因此经常使用。
  • IronBarcode 能够利用多个内核和线程,这对于批量处理服务器来说非常有利。
  • 在单页和多页文档中,IronBarcode 可自动查找一个或多个条形码。

2.使用 IronBarcode

要在解决方案中使用 IronBarcode 库,您必须下载所需的软件包。 为此,请使用下面描述的软件包管理器代码:

:PackageInstall

作为替代方法,您可以使用 NuGet 软件包管理器(将显示所有搜索结果)来查找并下载 "Barcode "软件包。 然后,您可以从中选择必要的软件包下载到程序中。

如何在ZXing中扫描条形码:适用于C#开发者 图6

3.使用 IronBarcode 读写条形码

只需几行代码,我们就可以使用 IronBarcode 库快速制作条形码图像。 此外,它还能让我们将创建的 BarCode 保存为单独的图片文件。下面是一些使用 Console 程序创建条形码标签的 Visual Basic 示例代码。

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");
Imports IronBarCode
QRCodeWriter.CreateQrCode(textBox1.Text, 500, QRCodeWriter.QrErrorCorrectionLevel.Medium, 0).SaveAsPng("demo.png")
$vbLabelText   $csharpLabel

利用中等级别的纠错生成一个500乘500像素的图形,然后使用SaveAsPng方法保存到文件位置。

下一个代码示例将读取我们在上一个示例中创建的二维码中编码的文本。

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

我们首先将图像加载到位图中,然后使用BarcodeReader类的Read方法读取图像。 我们使用从Read方法返回的BarcodeResults对象上的Values属性来获取从二维码中读取的内容。

要了解更多有关ZXing的信息以及它与IronBarcode的对比,请阅读这个下一篇博客文章

我们的读取条形码教程还提供了有关如何使用IronBarcode读取条形码和二维码的更多信息。 有关 IronBarcode 的更多代码教程。

结论

ZXing 条形码扫描仪可以创建高质量的条形码,但它已经过时,支持的条形码格式也很少。 它的文档和产品支持也很有限。

另一方面,IronBarcode 非常高效灵活,能够在许多操作系统上运行。 IronBarcode 可以改变条形码中使用的颜色、大小、间距和字母。 它还支持 Crystal Reports。

开发人员可以免费使用IronBarcode。 用户可以购买许可证以访问更多功能,并获得一整年的支持和产品更新。

乔尔迪·巴尔迪亚
乔尔迪·巴尔迪亚
软件工程师
Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 运用技能时,他会进行游戏编程。作为产品测试、产品开发和研究的负责人之一,Jordi 为持续的产品改进增添了极大的价值。多样化的经验让他充满挑战和参与感,他说这是他在 Iron Software 工作中最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。
下一步 >
ZXing.org二维码库和IronBarcode:全面比较