跳過到頁腳內容
使用IRONBARCODE
如何在 C# Windows 應用程式中讀取條碼掃描器

如何在C# Windows應用程式中使用條碼掃描器

本教學將以 IronBarcode 函式庫為例,示範如何在 C# 控制台應用程式和 .NET Windows 窗體應用程式中掃描二維碼和條碼。

使用 IronBarcode 庫,可以同時掃描和讀取多個條碼,並且可以成功掃描不完美的影像。 我們先來明確一下什麼是條碼掃描器。

什麼是條碼掃描器?

條碼是由一系列寬度不一的平行黑線和白色空白組成的方形或長方形影像。 條碼掃描器或條碼閱讀器是一種可以讀取列印的條碼、解碼條碼中包含的資料並將資料傳送到電腦的裝置。

以下步驟將介紹如何使用 IronBarcode 庫建立條碼掃描器。

如何在 C# 中讀取條碼

  • 在 Microsoft Visual Studio 中建立一個 .NET Windows 窗體應用程式專案
  • 安裝條碼庫
  • 讀取任何條碼或二維碼
  • 一次掃描即可讀取多個條碼或二維碼
  • 允許 IronBarcode 讀取不完美的掃描件和照片

1. 在 Microsoft Visual Studio 中建立一個 Windows 窗體應用程式

開啟 Visual Studio > 按一下"建立新專案" > 選擇"Windows 表單應用程式範本" > 按下"下一步" > 為專案命名 > 按"下一步" > 選擇目標 .NET Framework > 按一下"建立"按鈕。

專案建立完成後,使用 Visual Studio 工具箱中的下列控制項設計窗體:PictureBox、Label、TextBox 和 Button 控制項。

如何在 C# Windows 應用程式中使用條碼掃描器,圖 1:條碼掃描器 條碼掃描器

2. 在 C# 中安裝 Barcode .NET 函式庫

條碼庫可以透過以下三種方法之一進行安裝:

1. 軟體包管理器控制台

在軟體包管理器控制台中輸入以下命令。 它將為您下載並安裝該軟體包。

Install-Package BarCode

2. NuGet 套件管理器解決方案

您也可以使用 NuGet 套件解決方案安裝條碼庫。 只需按照以下步驟操作:

按一下"工具" > "NuGet 套件管理員" > "管理解決方案的 NuGet 套件"

這將開啟 NuGet 套件管理器。 點擊"瀏覽"並蒐索"條碼",然後安裝類別庫。

3. 從連結下載

作為替代方案,您可以下載IronBarCode.Dll並將其作為引用新增至您的專案。

下載完成後,將以下引用新增至您的條碼閱讀器專案。

using IronBarCode;
using IronBarCode;
Imports IronBarCode
$vbLabelText   $csharpLabel

3. 讀取任何條碼或二維碼

使用 IronBarcode 庫和.NET 條碼閱讀器在 .NET 中讀取條碼或二維碼非常容易。

條碼掃描器

在您的專案中,瀏覽找到您想要讀取的圖像。 它將在PictureBox中開啟; 現在點選"掃描二維碼"。 文字將顯示在文字方塊中。

以下是用於開啟圖片的"瀏覽"按鈕的程式碼:

// Open file dialog   
OpenFileDialog open = new OpenFileDialog();
// Image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)|*.jpg;*.png;*.jpeg;*.gif;*.bmp";
if (open.ShowDialog() == DialogResult.OK) {  
    // Display image in PictureBox
    pictureBox1.Image = new Bitmap(open.FileName); 
    // Store image file path in class data member. Initialize it as string ImageFileName;
    ImageFileName = open.FileName; 
}
// Open file dialog   
OpenFileDialog open = new OpenFileDialog();
// Image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)|*.jpg;*.png;*.jpeg;*.gif;*.bmp";
if (open.ShowDialog() == DialogResult.OK) {  
    // Display image in PictureBox
    pictureBox1.Image = new Bitmap(open.FileName); 
    // Store image file path in class data member. Initialize it as string ImageFileName;
    ImageFileName = open.FileName; 
}
' Open file dialog   
Dim open As New OpenFileDialog()
' Image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)|*.jpg;*.png;*.jpeg;*.gif;*.bmp"
If open.ShowDialog() = DialogResult.OK Then
	' Display image in PictureBox
	pictureBox1.Image = New Bitmap(open.FileName)
	' Store image file path in class data member. Initialize it as string ImageFileName;
	ImageFileName = open.FileName
End If
$vbLabelText   $csharpLabel

"掃描二維碼"按鈕的代碼:

// Read the barcode from the image file path
BarcodeResult Result = BarcodeReader.Read(ImageFileName);
// Display the decoded text in TextBox
textBox1.Text = Result.Text;
// Read the barcode from the image file path
BarcodeResult Result = BarcodeReader.Read(ImageFileName);
// Display the decoded text in TextBox
textBox1.Text = Result.Text;
' Read the barcode from the image file path
Dim Result As BarcodeResult = BarcodeReader.Read(ImageFileName)
' Display the decoded text in TextBox
textBox1.Text = Result.Text
$vbLabelText   $csharpLabel

條碼掃描器會在文字方塊中顯示條碼數據,如下所示:

如何在 C# Windows 應用程式中使用條碼掃描器,圖 2:要使用 C# 掃描的條碼影像 使用 C# 掃描條碼影像

QR 圖碼掃描器

本節中,IronBarcode 庫有效地處理了涉及傾斜二維碼的現實世界情況。 雖然傾斜角度的二維碼可以透過Read方法處理和讀取,但解決起來仍然需要更多的時間。 IronBarcode 庫提供了一種自訂方式,可以使用BarcodeReaderOptions作為額外的參數來處理此類影像輸入。 代碼如下:

// Define a collection of image filters to apply
var filtersToApply = new ImageFilterCollection() {
    new SharpenFilter(),
    new InvertFilter(),
    new ContrastFilter(),
    new BrightnessFilter(),
    new AdaptiveThresholdFilter(),
    new BinaryThresholdFilter()
};

// Configure barcode reader options with specified filters
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions() {
    ImageFilters = filtersToApply,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
};

// Read the barcode/QR code with custom options and display result
BarcodeResult Result = BarcodeReader.Read(ImageFileName, myOptionsExample);
textBox1.Text = Result.Text;
// Define a collection of image filters to apply
var filtersToApply = new ImageFilterCollection() {
    new SharpenFilter(),
    new InvertFilter(),
    new ContrastFilter(),
    new BrightnessFilter(),
    new AdaptiveThresholdFilter(),
    new BinaryThresholdFilter()
};

// Configure barcode reader options with specified filters
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions() {
    ImageFilters = filtersToApply,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
};

// Read the barcode/QR code with custom options and display result
BarcodeResult Result = BarcodeReader.Read(ImageFileName, myOptionsExample);
textBox1.Text = Result.Text;
' Define a collection of image filters to apply
Dim filtersToApply = New ImageFilterCollection() From {
	New SharpenFilter(),
	New InvertFilter(),
	New ContrastFilter(),
	New BrightnessFilter(),
	New AdaptiveThresholdFilter(),
	New BinaryThresholdFilter()
}

' Configure barcode reader options with specified filters
Dim myOptionsExample As New BarcodeReaderOptions() With {
	.ImageFilters = filtersToApply,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}

' Read the barcode/QR code with custom options and display result
Dim Result As BarcodeResult = BarcodeReader.Read(ImageFileName, myOptionsExample)
textBox1.Text = Result.Text
$vbLabelText   $csharpLabel

打開傾斜的二維碼影像後,輸出結果如下:

如何在 C# Windows 應用程式中使用條碼掃描器,圖 4:傾斜的二維碼影像 傾斜的二維碼影像

單次掃描讀取多個條碼

PDF文檔

可以從 PDF 文件中掃描條碼圖像,並根據需要適當地顯示每個結果。 以下範例程式碼可讓您從 PDF 檔案中讀取多個條碼。

// Scan for multiple barcodes within a PDF document
BarcodeResult[] PDFResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");

// Work with the results found
foreach (var PageResult in PDFResults) { 
    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);
}
// Scan for multiple barcodes within a PDF document
BarcodeResult[] PDFResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");

// Work with the results found
foreach (var PageResult in PDFResults) { 
    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);
}
' Scan for multiple barcodes within a PDF document
Dim PDFResults() As BarcodeResult = BarcodeReader.ReadPdf("MultipleBarcodes.pdf")

' Work with the results found
For Each PageResult In PDFResults
	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

PDF 檔案中的條碼和二維碼:

如何在 C# Windows 應用程式中使用條碼掃描器,圖 3:C# - 從 PDF 結果中讀取條碼 C# - 從 PDF 結果中讀取條碼

從不完美影像中讀取條碼

在實際應用中,條碼在影像、掃描件、縮圖或照片中經常會出現瑕疵,並且可能包含數位雜訊或出現傾斜。 本節示範如何從縮圖中讀取條碼資料。

縮圖

IronBarcode 庫使用C# 條碼產生器,它甚至能夠讀取損壞的條碼縮圖。

如何在 C# Windows 應用程式中使用條碼掃描器,圖 5:自動條碼縮圖大小校正。 使用 IronBarcode 在 C# 中讀取檔案 自動校正條碼縮圖尺寸。 使用 IronBarcode 在 C# 中讀取文件

它會自動偵測太小而無法合理表示實際條碼的影像,然後放大並清除與縮圖相關的所有數位噪聲,從而使它們再次可讀。

// Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.Read("ThumbnailOfBarcode.gif");
// Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.Read("ThumbnailOfBarcode.gif");
' Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
Dim SmallResult As BarcodeResult = BarcodeReader.Read("ThumbnailOfBarcode.gif")
$vbLabelText   $csharpLabel

摘要

IronBarcode 是一個功能強大的 .NET 軟體庫和C# QR 碼產生器,用於掃描和讀取各種條碼影像格式,無論這些條碼是完美的螢幕截圖,還是實際上是照片、掃描件或其他不完美的真實世界影像,它都能勝任。 此外,IronBarcode 還提供各種自訂選項來提高條碼讀取速度,例如裁剪區域或多線程,以及提高 ML 模型的準確性。 請造訪官方文件頁面,以了解有關 IronBarcode 的更多資訊。

目前,如果您購買完整的 Iron Suite ,您只需支付兩個庫的價格即可獲得五個庫。

常見問題解答

在 C# 應用程式中,何謂 BarCode 掃描器?

BarCode 掃描器是一種讀取印刷條碼、解碼資訊並將其傳送至電腦的裝置。在 C# 應用程式中,可以使用 IronBarcode 之類的函式庫來實現此功能。

如何使用 C# 建立一個條碼掃描的 Windows Forms 應用程式?

要在 C# 中為條碼掃描建立 Windows Forms 應用程式,請開啟 Visual Studio,使用「Windows Forms 應用程式範本」建立新專案,設定您的目標 .NET Framework,並使用 PictureBox、Label、TextBox 和 Button 等控制項設計表單。

在 C# 專案中安裝 BarCode 函式庫的建議方法是什麼?

您可以透過套件管理員控制台,以 Install-Package IronBarCode、透過 NuGet 套件管理員,或下載 DLL 並將其新增為參考,在 C# 專案中安裝 IronBarcode 之類的條碼函式庫。

是否可以使用 C# 函式庫在一次掃描中讀取多個 BarCode?

是的,使用 IronBarcode,您可以使用 BarcodeReader.ReadPdf 方法在單次掃描中讀取多個條碼,甚至可以從 PDF 文件中讀取。

圖書館如何從低品質影像中讀取 BarCode?

IronBarcode 可透過應用影像濾波器和升頻技術,從低品質的影像中解釋條碼,以減少數位雜訊,確保讀取準確度。

IronBarcode 等 C# 库支持哪些条码格式?

IronBarcode 支援多種條碼格式,包括 QR 碼和 Code128。即使影像不完美或使用攝影機拍攝,它也能讀取這些格式。

在 .NET 應用程式中實作 BarCode 讀取的步驟為何?

要實現條碼讀取,請將圖片載入 PictureBox,觸發「掃描條碼」動作,並使用 IronBarcode 處理並將解碼後的文字顯示在 TextBox 中。

IronBarcode 能否有效處理歪斜或傾斜的 QR 代碼?

是的,IronBarcode 可以有效地處理傾斜的 QR 代碼,方法是使用 BarcodeReaderOptions 來套用必要的影像濾鏡和調整,以達到準確的讀取。

IronBarcode 為條碼讀取提供哪些自訂功能?

IronBarcode 提供裁剪區域、多線程和參數調整等功能,以提高條碼讀取速度和準確性。

我在哪裡可以找到在 C# 中使用 BarCode 函式庫的更詳細資訊?

有關在 C# 中使用 BarCode 程式庫的詳細資訊,您可以造訪 Iron Software 網站的官方文件頁面。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。