使用 C# 和 VB.NET 應用程式中的條碼和 QR 碼

This article was translated from English: Does it need improvement?
Translated
View the article in English

使用 Iron Software 開發的 IronBarcode 軟體庫,在 C# 和所有其他 .NET 語言中讀取和寫入條碼非常簡單。

安裝 IronBarcode

第一步將是安裝 IronBarcode,可以通過使用我們的 NuGet 套件來實現。 下載DLL 來自這個網站。IronBarcode類別可以在此找到 IronBarcode 名稱空間

安裝 IronBarcode 最簡單的方法是使用 Visual-Studio 的 NuGet 套件管理器:

套件名稱為 “Barcode”。

Install-Package BarCode

https://www.nuget.org/packages/Barcode/

讀取條碼或 QR 碼

使用 IronBarcode 讀取條碼只需要幾行代碼。

:path=/static-assets/barcode/content-code-examples/get-started/get-started-1.cs
using IronBarCode;

BarcodeResults results = BarcodeReader.Read("QuickStart.jpg");
if (results != null)
{
    foreach (BarcodeResult result in results)
    {
        Console.WriteLine(result.Text);
    }
}
Imports IronBarCode

Private results As BarcodeResults = BarcodeReader.Read("QuickStart.jpg")
If results IsNot Nothing Then
	For Each result As BarcodeResult In results
		Console.WriteLine(result.Text)
	Next result
End If
VB   C#

為了提高讀取條碼的速度和準確性,我們可以指定特定的條碼格式 (或格式) 這樣 Iron Barcode 就不必嘗試識別每一種已知的條碼類型。如果已知的話,我們還可以選擇圖像的某個特定裁剪區域或區域進行查找。

:path=/static-assets/barcode/content-code-examples/get-started/get-started-2.cs
using IronBarCode;

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    CropArea = new System.Drawing.Rectangle(100, 200, 300, 400),
};

BarcodeResults result = BarcodeReader.Read("QuickStart.jpg", myOptionsExample);
if (result != null)
{
    Console.WriteLine(result.First().Text);
}
Imports IronBarCode

Private myOptionsExample As New BarcodeReaderOptions() With {
	.ExpectMultipleBarcodes = False,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
	.CropArea = New System.Drawing.Rectangle(100, 200, 300, 400)
}

Private result As BarcodeResults = BarcodeReader.Read("QuickStart.jpg", myOptionsExample)
If result IsNot Nothing Then
	Console.WriteLine(result.First().Text)
End If
VB   C#

我們也可以選擇在一次簡單的掃描中掃描多個條碼。

:path=/static-assets/barcode/content-code-examples/get-started/get-started-3.cs
using IronBarCode;

BarcodeResults results = BarcodeReader.Read("MultipleBarcodes.png");

// Loop through the results
foreach (BarcodeResult result in results)
{
    string value = result.Value;
    Bitmap img = result.BarcodeImage;
    BarcodeEncoding barcodeType = result.BarcodeType;
    byte[] binary = result.BinaryValue;
    Console.WriteLine(result.Value);
}
Imports IronBarCode

Private results As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.png")

' Loop through the results
For Each result As BarcodeResult In results
	Dim value As String = result.Value
	Dim img As Bitmap = result.BarcodeImage
	Dim barcodeType As BarcodeEncoding = result.BarcodeType
	Dim binary() As Byte = result.BinaryValue
	Console.WriteLine(result.Value)
Next result
VB   C#

我們還可以使用 IronBarcode 從一頁或多頁的 PDF 文件或多頁 TIFF 中讀取條碼。

:path=/static-assets/barcode/content-code-examples/get-started/get-started-4.cs
using IronBarCode;

BarcodeResults pagedResults = BarcodeReader.Read("MultipleBarcodes.pdf");

// Loop through the results
foreach (BarcodeResult result in pagedResults)
{
    int pageNumber = result.PageNumber;
    string value = result.Value;
    Bitmap img = result.BarcodeImage;
    BarcodeEncoding barcodeType = result.BarcodeType;
    byte[] binary = result.BinaryValue;
    Console.WriteLine(result.Value);
}

// or from a multi-page  TIFF scan with image correction:
BarcodeResults multiFrameResults = BarcodeReader.Read(inputImage: "Multiframe.tiff", new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Detailed,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.Code128,
    Multithreaded = false,
    RemoveFalsePositive = false,
    ImageFilters = null
});
Imports IronBarCode

Private pagedResults As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.pdf")

' Loop through the results
For Each result As BarcodeResult In pagedResults
	Dim pageNumber As Integer = result.PageNumber
	Dim value As String = result.Value
	Dim img As Bitmap = result.BarcodeImage
	Dim barcodeType As BarcodeEncoding = result.BarcodeType
	Dim binary() As Byte = result.BinaryValue
	Console.WriteLine(result.Value)
Next result

' or from a multi-page  TIFF scan with image correction:
Dim multiFrameResults As BarcodeResults = BarcodeReader.Read(inputImage:= "Multiframe.tiff", New BarcodeReaderOptions With {
	.Speed = ReadingSpeed.Detailed,
	.ExpectMultipleBarcodes = True,
	.ExpectBarcodeTypes = BarcodeEncoding.Code128,
	.Multithreaded = False,
	.RemoveFalsePositive = False,
	.ImageFilters = Nothing
})
VB   C#

寫入條碼

使用 IronBarcode 來創建或寫入條碼時,我們會使用 BarcodeWriter 類別。使用 BarcodeWriter,寫入條碼非常簡單。我們只需指定條碼格式和想要表達的值,它就會創建一個圖像,可以將其匯出為 System.Drawing.Image 對象或保存到文件中。

:path=/static-assets/barcode/content-code-examples/get-started/get-started-5.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.SaveAsImage("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.SaveAsImage("myBarcode.png")
VB   C#

條碼樣式

使用 IronBarcode,可以非常容易地操控條碼的視覺表現。每次 BarcodeWriter 操作的輸出都是一個生成的條碼物件。這個生成的條碼物件擁有 Fluent API,允許在一行代碼中設置條碼的圖形設定,類似於 Linq。

條碼樣式的流行功能包括調整條碼大小、設置邊距、更改背景顏色、更改條碼顏色,並驗證輸出條碼是否仍然可讀。

同樣,我們還可以添加註釋,例如以任意字體將文字添加到條碼,或者非常容易地將條碼的值放置在條碼下方或上方。

:path=/static-assets/barcode/content-code-examples/get-started/get-started-6.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.AddAnnotationTextAboveBarcode("Product URL:");
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SaveAsImage("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.AddAnnotationTextAboveBarcode("Product URL:")
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.SaveAsImage("myBarcode.png")
VB   C#

將條碼匯出為 HTML

生成的條碼對象還具有一個便捷的功能,可以從生成的條碼導出 HTML。它可以將條碼匯出為無需外部資源的獨立 HTML 文件,獨立的 HTML 標籤,或數據 URI。

:path=/static-assets/barcode/content-code-examples/get-started/get-started-7.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.AddAnnotationTextAboveBarcode("Product URL:");
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SetMargins(100);
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple);

// All major image formats supported as well as PDF and HTML
myBarcode.SaveAsPng("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.AddAnnotationTextAboveBarcode("Product URL:")
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.SetMargins(100)
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple)

' All major image formats supported as well as PDF and HTML
myBarcode.SaveAsPng("myBarcode.png")
VB   C#

生成QR碼

在使用IronBarcode生成QR碼時,我們可以選擇使用QRCodeWriter類而非BarcodeWriter類。該類提供了一些新穎且有趣的QR碼生成功能。它允許我們設置QR錯誤更正級別,使你可以在QR碼的大小和易讀性之間做出平衡。

:path=/static-assets/barcode/content-code-examples/get-started/get-started-8.cs
using IronBarCode;

QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf");
Imports IronBarCode

QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf")
VB   C#

Iron Barcode 也允許為 QR 碼進行樣式設計,例如,在圖片的正中間放置並對齊到網格的標誌圖形。它還可以上色,以匹配特定品牌或圖形識別。

:path=/static-assets/barcode/content-code-examples/get-started/get-started-9.cs
using IronBarCode;
using IronSoftware.Drawing;

QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo);
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf");
Imports IronBarCode
Imports IronSoftware.Drawing

Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo)
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf")
VB   C#

支援的條碼格式

Iron Barcode 支援大量常用的條碼格式:

  • QR 碼,包括裝飾和品牌 QR 碼,具有標誌和顏色
  • 多格式條碼,如 Aztec、Data Matrix、CODE 93 和 CODE 128
  • RSS Expanded Databar、UPS MaxiCode 和 USPS IMb OneCode 條碼
  • 疊式線性條碼如 RSS-14 和 PDF-417
  • 傳統數字條碼格式如 UPCA、UPCE、EAN-8、EAN-13、Codabar、ITF、MSI 和 Plessey
:path=/static-assets/barcode/content-code-examples/get-started/get-started-10.cs
using IronBarCode;

var myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.SaveAsImage("myBarcode.png");
myBarcode.SaveAsGif("myBarcode.gif");
myBarcode.SaveAsHtmlFile("myBarcode.html");
myBarcode.SaveAsJpeg("myBarcode.jpg");
myBarcode.SaveAsPdf("myBarcode.Pdf");
myBarcode.SaveAsPng("myBarcode.png");
myBarcode.SaveAsTiff("myBarcode.tiff");
myBarcode.SaveAsWindowsBitmap("myBarcode.bmp");
Image myBarcodeImage = myBarcode.Image;
Bitmap myBarcodeBitmap = myBarcode.ToBitmap();
string dataUrl = myBarcode.ToDataUrl();
string imgTagForHtml = myBarcode.ToHtmlTag();
byte[] pngBytes = myBarcode.ToPngBinaryData();

// Binary barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
using (System.IO.Stream pdfStream = myBarcode.ToPdfStream())
{
    // Stream barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
}
myBarcode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50);
Imports IronBarCode

Private myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.SaveAsImage("myBarcode.png")
myBarcode.SaveAsGif("myBarcode.gif")
myBarcode.SaveAsHtmlFile("myBarcode.html")
myBarcode.SaveAsJpeg("myBarcode.jpg")
myBarcode.SaveAsPdf("myBarcode.Pdf")
myBarcode.SaveAsPng("myBarcode.png")
myBarcode.SaveAsTiff("myBarcode.tiff")
myBarcode.SaveAsWindowsBitmap("myBarcode.bmp")
Dim myBarcodeImage As Image = myBarcode.Image
Dim myBarcodeBitmap As Bitmap = myBarcode.ToBitmap()
Dim dataUrl As String = myBarcode.ToDataUrl()
Dim imgTagForHtml As String = myBarcode.ToHtmlTag()
Dim pngBytes() As Byte = myBarcode.ToPngBinaryData()

' Binary barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
Using pdfStream As System.IO.Stream = myBarcode.ToPdfStream()
	' Stream barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
End Using
myBarcode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50)
VB   C#

為什麼選擇 Iron Barcode?

Iron Barcode 為開發者提供了一個友好的 API,讓他們可以在 .NET 平台上讀取和寫入條碼,並在現實場景中優化準確性和低錯誤率。

例如,BarcodeWriter 類會自動驗證和校正 UPCA 和 UPCE 條碼上的「校驗和」。它還會對特定數字格式過短的數字進行「零填充」。如果您的數據與指定的數據格式不符,Iron Barcode 將會建議開發者使用更適合的條碼格式。

當條碼經過掃描或從拍攝到的圖像中讀取時,Iron Barcode 在讀取條碼方面表現出色。換句話說,即使圖像不完美,並且不是單純的機器生成的屏幕截圖,Iron Barcode 仍然可以很好地工作。

Iron Barcode 包含自動旋轉和透視校正、數字噪聲校正,並且可以自動檢測圖像中所編碼的條碼類型。

前進

為了更好地使用 IronBarcode,我們建議您閱讀這一文檔中的教程,訪問我們的 GitHub,並閱讀 .NET API 參考資料 以MSDN格式。