C# QR Code Generator for .NET
正如您在創建條碼入門教程中所讀到的,使用IronBarcode創建、設計和導出條碼為圖像非常簡單,通常可以通過一行程式碼完成。
在此範例中,我們將更深入地探討QR碼,這種二維條碼在工業應用和零售中越來越受歡迎。
如何在C#中讀取和生成QR碼
- 下載 QR code 生成器庫
- 只需添加一行代碼即可生成一個QR碼
- 將您的徽標添加到 QR 碼
- 驗證您的 QR 碼是否可讀取
- 處理二進制數據的 QR 代碼讀寫
在C中安裝QR Code生成庫
立即開始在您的專案中使用IronPDF,並享受免費試用。
查看 IronBarcode 上 Nuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變。
Install-Package BarCode
請考慮安裝 IronBarcode DLL 直接下載並手動安裝到您的專案或GAC表單: IronBarCode.zip
手動安裝到您的項目中
下載DLL在開始之前,我們需要安裝 條碼 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
使用一行代碼創建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")
錯誤更正允許我們定義在現實環境中 QR 碼的可讀性。較高的錯誤更正等級會創建具有更多像素和更高複雜度的較大 QR 碼。
添加標誌
在第二個範例中,我們將查看公司希望為其 QR 碼添加標誌的使用案例,這是我們現在常見的情況。通過使用 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")
以下範例將 Visual Studio 標誌添加到條碼中。它會自動調整到合適的大小,使純代碼仍然可讀,並將該標誌對齊到 QR 碼的網格,從而看起來合適。下一行代碼將條碼上色為深綠色。然而,它不會改變標誌的顏色。
保存為圖像、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")
驗證 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")
最後幾行程式碼將 QR Code 匯出為不含資源的獨立 HTML 檔案,然後在預設瀏覽器中打開該 HTML 檔案。
讀取和寫入二進制數據
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
總結來說, 條碼 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
還有一種更高級的形式,讓開發人員有更多的控制:
: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
前進
了解更多有關此範例和使用 C#中的QR碼,我們鼓勵您在我們的 GitHub 頁面上 fork 它或從我們的網站下載源代碼。
原始碼下載
下載此 C# QR 碼生成教學文件和 DLL。 GitHub 存储库
更多文件資料
您還可以找到 QRCodeWriter 和 條碼讀取器 在 API 參考中感興趣的類別。
他們記錄了 IronBarcode 的完整功能集, VB.NET 條碼生成器,無法在單一教程中包羅萬象。