跳至页脚内容
与其他组件比较

How to Scan Barcodes in ZXing For C# Developers

Barcodes provide a clear and machine-readable way to present data. Initially, barcodes consisted of parallel lines with varying widths and spacing, serving as a representation of data. These traditional linear or one-dimensional (1D) barcodes could be scanned by specialized optical devices called barcode readers. However, the evolution of barcodes led to the invention of two-dimensional (2D) barcodes, also known as matrix codes. Unlike traditional barcodes, 2D barcodes utilize patterns such as rectangles, dots, and hexagons instead of bars. To read these 2D barcodes, specific optical scanner setups are available, or alternative methods involve using a digital camera connected to a computer running decoding software. Moreover, mobile devices like smartphones can leverage their integrated cameras and dedicated applications to function as a 2D barcode scanner.

ZXing Barcode Scanner

Zebra Crossing, often known as ZXing, is an open-source, multi-format 1D/2D barcode image processing toolkit that was developed in Java and has ports for other languages. The core image decoding library, Java-specific client code, and the Android client Barcode Scanner are only a few of the modules that make up ZXing. Numerous more independent open-source projects are built upon it.

1. Features

  • It can keep track of URLs, contact information, calendar events, and more.
  • It was created with Java SE applications in mind.
  • Through purpose, barcode scanner integration is possible.
  • It is a simple Google Glass application.

2. Using ZXing with .NET

Open Visual Studio, choose "new project" from the file menu, then "console application". In this article, we are choosing the C# console app.

How to Scan Barcodes in ZXing For C# Developers Figure 1

Enter the project name and the file path in the appropriate text box. Next, click the Create button to choose the required .NET Framework.

If you selected a console application, the project will now create its structure and open the program.cs file, allowing you to enter the program's code and build or execute it.

How to Scan Barcodes in ZXing For C# Developers Figure 2

2.1 Install ZXing Barcode

Enter the following command into the NuGet Package Manager Console to install the ZXing library:

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

Alternatively, you can get the package using the NuGet package manager tool. Like the illustration below. Try installing the first result you choose.

How to Scan Barcodes in ZXing For C# Developers Figure 3

2.2 Read and Write Barcode using ZXing

We can create a barcode using the following sample code. ZXing allows us to create more than 10 types of barcode formats.

using ZXing.Windows.Compatibility;

var options = new QrCodeEncodingOptions
{
    Width = 250,
    Height = 250,
};

var writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options = options;

// Encode the string into a QR code bitmap image
System.Drawing.Bitmap _bitmap = writer.Write("Hello world");

// Save the bitmap as a PNG file
_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;

// Encode the string into a QR code bitmap image
System.Drawing.Bitmap _bitmap = writer.Write("Hello world");

// Save the bitmap as a PNG file
_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

' Encode the string into a QR code bitmap image
Dim _bitmap As System.Drawing.Bitmap = writer.Write("Hello world")

' Save the bitmap as a PNG file
_bitmap.Save("Demo1.png")
$vbLabelText   $csharpLabel

The code above sets the height and width for the QrCodeEncodingOptions. Then it creates an instance of BarcodeWriter. For the BarcodeWriter, we set the barcode format as QR code. We assign the previously created QR code options to the writer. The Write method in the BarcodeWriter encodes the given string into a barcode and returns it as a bitmap image. The image is saved using the Save method of the bitmap. Below is the result from the code.

How to Scan Barcodes in ZXing For C# Developers Figure 4

The next code sample demonstrates decoding a barcode using ZXing.

using ZXing.Windows.Compatibility;

// Load the barcode image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");

// Create a BarcodeReader object
var reader = new BarcodeReader();

// Decode the bitmap into a result
var result = reader.Decode(barcodeBitmap);

if (result != null)
{
    // Output the decoded text to the console
    Console.WriteLine(result.Text);
    Console.ReadKey();
}
using ZXing.Windows.Compatibility;

// Load the barcode image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");

// Create a BarcodeReader object
var reader = new BarcodeReader();

// Decode the bitmap into a result
var result = reader.Decode(barcodeBitmap);

if (result != null)
{
    // Output the decoded text to the console
    Console.WriteLine(result.Text);
    Console.ReadKey();
}
Imports ZXing.Windows.Compatibility

' Load the barcode image into a bitmap
Private barcodeBitmap = CType(System.Drawing.Bitmap.FromFile("demo.png"), System.Drawing.Bitmap)

' Create a BarcodeReader object
Private reader = New BarcodeReader()

' Decode the bitmap into a result
Private result = reader.Decode(barcodeBitmap)

If result IsNot Nothing Then
	' Output the decoded text to the console
	Console.WriteLine(result.Text)
	Console.ReadKey()
End If
$vbLabelText   $csharpLabel

In the code above, we first load the image into a bitmap and then create a BarcodeReader object. The Decode function allows us to pass the bitmap as a parameter, which can return results in multiple formats. We use the Text property to get the text encoded in the barcode.

How to Scan Barcodes in ZXing For C# Developers Figure 5

IronBarcode

With the help of this barcode library, reading and creating barcodes is straightforward. A dynamic barcode is easy to make with IronBarcode's Library. With just a few lines of code, this simple library can generate a barcode, which helps us to encode barcode images. IronBarcode enables us to generate barcodes in languages like C# and VB.NET.

1. Features

  • IronBarcode can read and write the majority of barcode image formats and QR standards, including UPC A/E, Databar, EAN 8/13, MSI, Code 39/93/128, CodaB, RSS 14/Expanded, and ITF.
  • While scanning scans and real-time video frames, IronBarcode can rectify rotation, noise, distortion, and skewing. To improve reading accuracy and speed, IronBarcode preprocesses barcode images automatically as they are being created. Dynamic barcodes are frequently used as they allow for changing content.
  • IronBarcode's ability to utilize many cores and threads is advantageous for batch-processing servers.
  • In single- and multipage documents, IronBarcode can automatically find one or more barcodes.

2. Using IronBarcode

To utilize the IronBarcode library in the solution, you must download the required package. To do this, use the following command in the NuGet Package Manager Console:

Install-Package BarCode

As an alternative, you can use the NuGet Package Manager, which will show all the search results, to seek and download the "Barcode" package. Then you can select the essential package to download into the program from them.

How to Scan Barcodes in ZXing For C# Developers Figure 6

3. Read and Write Barcodes using IronBarcode

With just a few lines of code, we can quickly make barcode images using the IronBarcode library. Additionally, it enables us to save the created barcode as a separate picture file. Here is some sample C# code for creating a barcode label with a Console program.

using IronBarCode;

// Create a QR code with a medium error correction level
QRCodeWriter.CreateQrCode("Your text here", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("demo.png");
using IronBarCode;

// Create a QR code with a medium error correction level
QRCodeWriter.CreateQrCode("Your text here", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("demo.png");
Imports IronBarCode

' Create a QR code with a medium error correction level
QRCodeWriter.CreateQrCode("Your text here", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("demo.png")
$vbLabelText   $csharpLabel

This code produces a 500 by 500 pixel graphic using a medium level of error correction, and then saves it to a file location using the SaveAsPng method.

The next code example reads the text encoded in the QR code that we created in the previous example.

using IronBarCode;

// Load the QR code image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");

// Read the barcode image
var reader = IronBarCode.BarcodeReader.Read(barcodeBitmap);

// Output the decoded value to the console
Console.WriteLine(reader.Values[0]);
Console.ReadKey();
using IronBarCode;

// Load the QR code image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");

// Read the barcode image
var reader = IronBarCode.BarcodeReader.Read(barcodeBitmap);

// Output the decoded value to the console
Console.WriteLine(reader.Values[0]);
Console.ReadKey();
Imports IronBarCode

' Load the QR code image into a bitmap
Private barcodeBitmap = CType(System.Drawing.Bitmap.FromFile("demo.png"), System.Drawing.Bitmap)

' Read the barcode image
Private reader = IronBarCode.BarcodeReader.Read(barcodeBitmap)

' Output the decoded value to the console
Console.WriteLine(reader.Values(0))
Console.ReadKey()
$vbLabelText   $csharpLabel

We first load the image into a bitmap, and then read the image using the Read method on the BarcodeReader class. We use the Values property on the BarcodeResults object returned from the Read method to get the content that was read from the QR code.

To know more about ZXing and how it compares with IronBarcode, read this next blog post.

Our Reading Barcodes tutorial also provides more information about how to use IronBarcode to read barcodes and QR codes. For more code tutorials on IronBarcode.

Conclusion

ZXing barcode scanner can create high-quality barcodes, but it is outdated and supports few barcode formats. It also has limited documentation and product support.

On the other hand, IronBarcode is very efficient and flexible, and is able to work on many operating systems. IronBarcode can change the color, size, spacing, and lettering used in barcodes. It also supports Crystal Reports.

Developers can use IronBarcode for free. Users can purchase a license to access additional features and receive a full year of support and product updates.

请注意ZXing is a registered trademark of its respective owner. This site is not affiliated with, endorsed by, or sponsored by ZXing. All product names, logos, and brands are property of their respective owners. Comparisons are for informational purposes only and reflect publicly available information at the time of writing.

常见问题解答

如何在C#中将HTML转换为PDF?

你可以使用IronPDF的RenderHtmlAsPdf方法将HTML字符串转换为PDF。你还可以使用RenderHtmlFileAsPdf将HTML文件转换为PDF。

IronBarcode和ZXing有什么区别?

与ZXing相比,IronBarcode提供更大的灵活性,并支持更多的条形码格式。虽然ZXing对创建条形码有效,但在格式支持和文档方面有限。IronBarcode在效率上表现出色,并兼容各种操作系统。

如何使用移动设备扫描条码?

通过ZXing Android客户端条码扫描器,您可以利用设备的相机扫描条码。对于更强大的功能,可以将IronBarcode集成到移动应用中,以增强条码扫描能力。

IronBarcode支持2D条形码吗?

是的,IronBarcode支持1D和2D条形码,包括二维码,实现了多样化的条形码读取和创建。

IronBarcode可以处理动态条形码创建吗?

IronBarcode支持动态条形码创建,允许您根据特定要求自定义条形码的颜色、大小、间距和文字。

将IronBarcode集成到.NET项目中需要什么?

要将IronBarcode集成到.NET项目中,请通过NuGet包管理控制台使用Install-Package IronBarcode安装包或在NuGet包管理器中找到它。

使用IronBarcode是否有费用?

IronBarcode提供免费试用,但购买许可证可以获得额外功能、产品更新和一年的支持。

IronBarcode可用于从视频帧中读取条码吗?

可以,IronBarcode可以处理实时视频帧,校正旋转、噪声、失真和倾斜,从而提高条码扫描的准确性和速度。

ZXing用于条形码扫描的功能是什么?

ZXing提供了开源的条形码扫描工具包,特别是针对1D和2D条形码。它包括一个核心图像解码库和一个Android客户端条码扫描器。

IronBarcode支持哪些编程语言?

IronBarcode支持C#和VB.NET,非常适合使用.NET框架的开发人员。

Jordi Bardia
软件工程师
Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 利用这些技能时,他就在游戏编程。分享产品测试、产品开发和研究的责任,Jordi 在持续的产品改进中增加了巨大的价值。多样的经验使他面临挑战并保持投入,他表示这是在 Iron Software 工作的最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。