如何在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 控制項。
2. 在 C# 中安裝 Barcode .NET 函式庫
條碼庫可以透過以下三種方法之一進行安裝:
1. 軟體包管理器控制台
在軟體包管理器控制台中輸入以下命令。 它將為您下載並安裝該軟體包。
Install-Package BarCode
2. NuGet 套件管理器解決方案
您也可以使用 NuGet 套件解決方案安裝條碼庫。 只需按照以下步驟操作:
按一下"工具" > "NuGet 套件管理員" > "管理解決方案的 NuGet 套件" 。
這將開啟 NuGet 套件管理器。 點擊"瀏覽"並蒐索"條碼",然後安裝類別庫。
3. 從連結下載
作為替代方案,您可以下載IronBarCode.Dll並將其作為引用新增至您的專案。
下載完成後,將以下引用新增至您的條碼閱讀器專案。
using IronBarCode;
using IronBarCode;
Imports IronBarCode
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
"掃描二維碼"按鈕的代碼:
// 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
條碼掃描器會在文字方塊中顯示條碼資料,如下所示:
如何在 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
打開傾斜的二維碼影像後,輸出結果如下:
單次掃描讀取多個條碼
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
PDF 檔案中的條碼和二維碼:
如何在 C# Windows 應用程式中使用條碼掃描器,圖 3:C# - 從 PDF 結果中讀取條碼 C# - 從 PDF 結果中讀取條碼
從不完美影像中讀取條碼
在實際應用中,條碼在影像、掃描件、縮圖或照片中經常會出現瑕疵,並且可能包含數位雜訊或出現傾斜。 本節示範如何從縮圖中讀取條碼資料。
縮圖
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")
摘要
IronBarcode 是一個功能強大的 .NET 軟體庫和C# QR 碼產生器,用於掃描和讀取各種條碼影像格式,無論這些條碼是完美的螢幕截圖,還是實際上是照片、掃描件或其他不完美的真實世界影像,它都能勝任。 此外,IronBarcode 還提供各種自訂選項來提高條碼讀取速度,例如裁剪區域或多線程,以及提高 ML 模型的準確性。 請造訪官方文件頁面,以了解有關 IronBarcode 的更多資訊。
目前,如果您購買完整的 Iron Suite ,您只需支付兩個庫的價格即可獲得五個庫。
常見問題解答
在C#應用程式上下文中,什麼是條碼掃描器?
條碼掃描器是一種讀取印刷條碼、解碼信息並將其發送到計算機的設備。在C#應用程式中,此功能可以通過像IronBarcode這樣的庫實現。
我如何使用C#創建一個條碼掃描的Windows Forms Application?
要使用C#創建一個條碼掃描的Windows Forms Application,請打開Visual Studio,使用「Windows Forms Application Template」創建一個新項目,配置目標.NET框架,並使用PictureBox、Label、TextBox和Button等控件來設計表單。
在C#項目中安裝條碼庫的推薦方法是什麼?
您可以通過Package Manager Console使用Install-Package IronBarCode,通過NuGet Package Manager,或下載DLL並將其作為引用添加到C#項目中來安裝條碼庫如IronBarcode。
使用C#庫是否可以在一次掃描中讀取多個條碼?
是的,使用IronBarcode,您可以使用BarcodeReader.ReadPdf方法在一次掃描中讀取多個條碼,即使是在PDF文檔中。
該庫如何管理從低質量圖像中讀取條碼?
IronBarcode可以通過應用圖像濾鏡和放大技術來減少數字噪音,確保準確讀取條碼。
像IronBarcode這樣的C#庫支持什麼條碼格式?
IronBarcode支持包括QR碼和Code128在內的多種條碼格式。即使是有瑕疵或經過攝像頭拍攝的圖像也可以讀取這些格式。
在.NET應用程式中實現條碼讀取的步驟是什麼?
要實現條碼讀取,可以將圖像加載到PictureBox中,觸發「掃描碼」動作,並使用IronBarcode來處理和顯示解碼文本到TextBox中。
IronBarcode能否有效處理傾斜或歪斜的QR碼?
是的,IronBarcode可以通過使用BarcodeReaderOptions來應用必要的圖像濾鏡和調整來有效處理傾斜的QR碼,以實現準確讀取。
IronBarcode在條碼讀取方面提供了哪些自定義功能?
IronBarcode提供了裁剪區域、多線程和參數調整等功能,以提高條碼讀取速度和準確性。
在哪裡可以找到有關在C#中使用條碼庫的更多詳細信息?
有關在C#中使用條碼庫的更多詳細信息,可以訪問Iron Software網站上的官方文檔頁面。

