C# QR Code Generator for .NET

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

珍妮佛·懷特

如您可能在「創建條碼」入門教程中讀到的,使用IronBarcode創建、設計並導出條碼為圖像非常簡單,往往可以通過一行代碼完成。

在這個例子中,我們將更深入地研究 QR 碼,它們在工業應用和零售業中的普及性逐漸增加。

在C#中安裝QR Code生成器庫

立即在您的專案中使用IronBarcode,並享受免費試用。

第一步:
green arrow pointer

在開始之前,我們需要安裝 條碼 NuGet 套件。

Install-Package BarCode

https://www.nuget.org/packages/BarCode/ 作為替代方案,該 可以下載IronBarcode.dll 並作為參考添加到您的項目中来自 [.NET 條碼 DLL].

匯入名稱空間

在本教程中,我們需要確保我們的類文件引用 IronBarcode 以及一些正常的系統組件。

using IronBarCode;
using System;
using System.Drawing;
using System.Linq;
using IronBarCode;
using System;
using System.Drawing;
using System.Linq;
Imports IronBarCode
Imports System
Imports System.Drawing
Imports System.Linq
VB   C#


使用一行代碼創建 QR 碼

我們的第一個例子展示了如何使用一些簡單的文字創建一個標準化的條碼,直徑為500像素的正方形,並具有中等錯誤校正功能。

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-1.cs
using IronBarCode;

// Generate a Simple BarCode image and save as PDF
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png");
Imports IronBarCode

' Generate a Simple BarCode image and save as PDF
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png")
VB   C#

錯誤更正允許我們定義在實際情況中讀取 QR 碼的難易程度。 較高的錯誤校正等級會生成更大的 QR 碼,具有更多像素和更高的複雜性。

C# 建立 QR Code 圖片

添加標誌

在第二個例子中,我們將研究一個常見的使用案例,那就是一家公司希望在他們的QR碼中添加Logo。 使用 QRCodeWriter.CreateQRCodeWithLogo 方法,在下面的代碼示例中您可以看到這有多簡單。

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-2.cs
using IronBarCode;
using IronSoftware.Drawing;

// You may add styling with color, logo images or branding:
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);
myQRCodeWithLogo.ResizeTo(500, 500).SetMargins(10).ChangeBarCodeColor(Color.DarkGreen);

// Logo will automatically be sized appropriately and snapped to the QR grid.
myQRCodeWithLogo.SaveAsPng("myQRWithLogo.png");
Imports IronBarCode
Imports IronSoftware.Drawing

' You may add styling with color, logo images or branding:
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)
myQRCodeWithLogo.ResizeTo(500, 500).SetMargins(10).ChangeBarCodeColor(Color.DarkGreen)

' Logo will automatically be sized appropriately and snapped to the QR grid.
myQRCodeWithLogo.SaveAsPng("myQRWithLogo.png")
VB   C#

此示例將 Visual Studio 標誌添加到條碼中。 它會自動將其調整到適當的大小,以便純代碼仍然可讀,並將該標誌對齊到QR碼方格網格,使其看起來合適。 下一行代碼將條形碼漆成深綠色。 但是,它不會使標誌褪色。

C# 創建帶有 Logo 圖像的 QR Code

保存為圖像PDF或HTML

最後,我們將該 QR 保存為 PDF。 最後一行代碼將為您的方便在預設的PDF瀏覽器中打開PDF文件。

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-3.cs
using IronBarCode;

// You may add styling with color, logo images or branding:
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);

myQRCodeWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);

// Save as PDF
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf");

// Also Save as HTML
myQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html");
Imports IronBarCode

' You may add styling with color, logo images or branding:
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)

myQRCodeWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen)

' Save as PDF
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf")

' Also Save as HTML
myQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html")
VB   C#

驗證 QR 碼

在將標誌添加到 QR 碼並更改顏色時,我們要確保我們的 QR 碼仍然可讀。

通过使用GeneratedBarcode.Verify()在此方法中,我們可以測試我們的條碼是否仍然可讀。

在下面的程式碼範例中,我們將看到將 QR 碼改為淺藍色實際上會使其無法讀取。 我們在代碼中檢測到這一點,並且更喜歡深藍色。

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-4.cs
using IronBarCode;
using IronSoftware.Drawing;
using System;

// Verifying QR Codes
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode MyVerifiedQR = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);

MyVerifiedQR.ChangeBarCodeColor(System.Drawing.Color.LightBlue);

if (!MyVerifiedQR.Verify())
{
    Console.WriteLine("\t LightBlue is not dark enough to be read accurately.  Lets try DarkBlue");
    MyVerifiedQR.ChangeBarCodeColor(Color.DarkBlue);
}
MyVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html");

// open the barcode html file in your default web browser
System.Diagnostics.Process.Start("MyVerifiedQR.html");
Imports Microsoft.VisualBasic
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System

' Verifying QR Codes
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private MyVerifiedQR As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)

MyVerifiedQR.ChangeBarCodeColor(System.Drawing.Color.LightBlue)

If Not MyVerifiedQR.Verify() Then
	Console.WriteLine(vbTab & " LightBlue is not dark enough to be read accurately.  Lets try DarkBlue")
	MyVerifiedQR.ChangeBarCodeColor(Color.DarkBlue)
End If
MyVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html")

' open the barcode html file in your default web browser
System.Diagnostics.Process.Start("MyVerifiedQR.html")
VB   C#

最後幾行程式碼將 QR Code 匯出為不含資源的獨立 HTML 檔案,然後在預設瀏覽器中打開該 HTML 檔案。

C# 讀取和寫入 QR

讀取和寫入二進位資料

QR 碼是處理二進位數據的絕佳格式。 有時二進位數據比處理文本更節省空間或更適合。

在此範例中,我們將從字符串編碼一些二進制數據,將其寫入到 QR 格式的條碼中,然後將其作為二進制數據的位元組組讀取回來。 您會注意到這個功能在許多條碼庫中並不常見,使得IronBarcode在此方面具有獨特性。

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-5.cs
using IronBarCode;
using System;
using System.Linq;

// Create Some Binary Data - This example equally well for Byte[] and System.IO.Stream
byte[] BinaryData = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");

// WRITE QR with Binary Content
QRCodeWriter.CreateQrCode(BinaryData, 500).SaveAsImage("MyBinaryQR.png");

// READ QR with Binary Content
var MyReturnedData = BarcodeReader.Read("MyBinaryQR.png").First();
if (BinaryData.SequenceEqual(MyReturnedData.BinaryValue))
{
    Console.WriteLine("\t Binary Data Read and Written Perfectly");
}
else
{
    throw new Exception("Corrupted Data");
}
Imports Microsoft.VisualBasic
Imports IronBarCode
Imports System
Imports System.Linq

' Create Some Binary Data - This example equally well for Byte[] and System.IO.Stream
Private BinaryData() As Byte = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/")

' WRITE QR with Binary Content
QRCodeWriter.CreateQrCode(BinaryData, 500).SaveAsImage("MyBinaryQR.png")

' READ QR with Binary Content
Dim MyReturnedData = BarcodeReader.Read("MyBinaryQR.png").First()
If BinaryData.SequenceEqual(MyReturnedData.BinaryValue) Then
	Console.WriteLine(vbTab & " Binary Data Read and Written Perfectly")
Else
	Throw New Exception("Corrupted Data")
End If
VB   C#
C# 讀取和寫入二進制數據為 QR Code

總結來說,條碼 C# 函式庫專門為實際 QR 碼使用場景設計。 不僅能快速且精確地讀取QR碼,還可以對它們進行樣式設計,添加標誌,驗證條碼,以及用二進制數據進行編碼。

讀取QR碼

為了避免您在教程之間來回跳轉,我將添加一個使用IronBarcode讀取QR碼的我最喜歡的方式的代碼示例。

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-6.cs
using IronBarCode;
using System;
using System.Linq;

BarcodeResults result = BarcodeReader.Read("QR.png", new BarcodeReaderOptions() { ExpectBarcodeTypes = BarcodeEncoding.QRCode });
if (result != null)
{
    Console.WriteLine(result.First().Value);
}
Imports IronBarCode
Imports System
Imports System.Linq

Private result As BarcodeResults = BarcodeReader.Read("QR.png", New BarcodeReaderOptions() With {.ExpectBarcodeTypes = BarcodeEncoding.QRCode})
If result IsNot Nothing Then
	Console.WriteLine(result.First().Value)
End If
VB   C#

還有一種更高級的形式,讓開發人員有更多的控制:

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-7.cs
using IronBarCode;
using System;
using System.Linq;

BarcodeReaderOptions options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Faster,
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.All,
    Multithreaded = false,
    MaxParallelThreads = 0,
    CropArea = null,
    UseCode39ExtendedMode = false,
    RemoveFalsePositive = false,
    ImageFilters = null
};

BarcodeResults result = BarcodeReader.Read("QR.png", options);
if (result != null)
{
    Console.WriteLine(result.First().Value);
}
Imports IronBarCode
Imports System
Imports System.Linq

Private options As New BarcodeReaderOptions With {
	.Speed = ReadingSpeed.Faster,
	.ExpectMultipleBarcodes = False,
	.ExpectBarcodeTypes = BarcodeEncoding.All,
	.Multithreaded = False,
	.MaxParallelThreads = 0,
	.CropArea = Nothing,
	.UseCode39ExtendedMode = False,
	.RemoveFalsePositive = False,
	.ImageFilters = Nothing
}

Private result As BarcodeResults = BarcodeReader.Read("QR.png", options)
If result IsNot Nothing Then
	Console.WriteLine(result.First().Value)
End If
VB   C#

向前邁進

要了解更多關於此範例以及使用的資訊,C#中的QR碼,我們鼓勵您在我們的 GitHub 頁面上 fork 它或從我們的網站下載源代碼。

原始碼下載

下載這個C# QR碼生成器教程和DLL。

*GitHub 存儲庫

*原始碼壓縮包

進一步文件說明

您可能还会发现QRCodeWriter條碼讀取器API 參考中的類別值得關注。

他們記錄了IronBarcode的全部功能集,VB.NET 條碼生成器,無法在單一教程中包羅萬象。

.NET 條碼庫可以通過為產品及其特定的實體批次生產代碼生成唯一標識符來革新在線和離線產品目錄的連接方式。

珍妮佛·懷特

應用架構主管

Jenny 领导一家制药巨头数字产品开发部门的软件产品架构。Jenny 的团队正在使用 IronBarcode 连接线上和线下产品目录。