使用 IRONQR

如何在 .NET 6 中使用 QRCoder 和 IronQR 生成 QR 碼

發佈 2024年4月29日
分享:

用C#生成QR碼

在C#應用程式中生成QR碼是開發者的一個常見需求,特別是涉及產品識別、票務或輕鬆分享URL和其他數據的應用程式。有幾個用於在C#中生成QR碼的庫。兩個值得注意的選擇是 QRCoderIronQR這裡,我們將探討這兩者,比較它們的功能、易用性、性能和其他與開發人員使用 .NET 6 有關的因素。在本文中,我們將詳細比較這些庫,檢查它們的特性、易用性、許可證等,並附上代碼示例來說明它們的使用情況。

如何在 .NET 6 中使用 QRCoder 生成 QR 代碼,並與 IronQR 比較

  1. 建立一個新的 Visual Studio 專案來生成 QR 代碼

  2. 安裝 QRCoder 和 IronQR NuGet 套件進行比較

  3. 使用 QRCoder 和 IronQR 生成 QR 代碼

  4. 使用 QRCoder 和 IronQR 的自訂選項

QRCoder

QRCoder 是一個用C#編寫的開源庫和 QR Code 實現,允許您在任何 .NET 應用程式中生成由 ISO/IEC 18004 定義的 QR Code。這是一個輕量級且易於使用的庫,沒有對其他庫或網路堆疊的依賴。

以下是 QRCoder 的主要特點和優勢:

1. 易用性

C# QR 編碼器 提供簡單直觀的 API,使開發人員能夠輕鬆生成 QR 碼/ QR 碼文本,並且幾乎不費力氣。它的簡單性讓所有技能水平的開發人員都能快速將 QR 碼生成集成到他們的項目中。

2. 廣泛的自定義選項

QRCoder 的一個突出功能是根據具體需求自定義 QR 碼的能力。開發人員可以調整參數,如錯誤更正級別、大小、顏色,甚至在 QR 碼中嵌入徽標或圖片。

3. 多種編碼格式

QRCoder 支援各種編碼格式,使開發人員能夠將不同類型的數據編碼到 QR 碼中。無論是純文字、網址、聯絡資訊,還是 Wi-Fi 認證,QRCoder 都可以處理各種數據格式。

4. 高品質輸出

由 C# QRCoder 生成的 QR 二維碼質量很高,確保在不同設備和掃描條件下的可讀性和可靠性。這種可靠性對於 QR 二維碼作為實體與數位互動橋樑的應用至關重要。

5. 開源和積極開發

C# QRCoder 是一個開源項目,允許開發人員參與其開發,確保持續的改進和更新。這種積極的社區互動促進了創新,並確保庫在不斷發展的技術領域中保持相關性。

IronQR

IronQR 是一個由開發和維護的功能強大的 C# 二維碼庫 Iron Software它允許 C# 軟體工程師在 .NET 應用程式和網站中檢測、讀取和創建 QR 代碼。以下是 IronQR 的一些主要功能:

QR Code 生成

IronQR 可以高度自訂 QR碼生成您可以使用各種選項創建 QR 碼,例如調整大小、邊距、邊框和重新著色。

using IronQr;
using IronSoftware.Drawing;
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
using IronQr;
using IronSoftware.Drawing;
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
Imports IronQr
Imports IronSoftware.Drawing
' Prepare a QR Code object
Private theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
' Save QR Code to memory
Private myQrImage As AnyBitmap = theQrGen.Save()
' Save QR Code image to disk
myQrImage.SaveAs("awesome.png")
VB   C#

QR Code Reading

IronQR 使用先進的機器學習模型進行 QR 碼檢測。該模型可確保準確且快速的 QR 碼讀取。IronQR 支援 讀取 QR 碼 從各種圖像格式,例如 JPG、PNG、SVG、bmp 和多頁圖像例如 gif 和 tiff。

using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Read QR code
var inputBmp = AnyBitmap.FromFile("awesome.png");
// Load the image into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create the QR Reader object
QrReader reader = new QrReader();
// Read the Input an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Read QR code
var inputBmp = AnyBitmap.FromFile("awesome.png");
// Load the image into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create the QR Reader object
QrReader reader = new QrReader();
// Read the Input an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
Imports IronQr
Imports IronSoftware.Drawing
Imports System.Collections.Generic
' Read QR code
Private inputBmp = AnyBitmap.FromFile("awesome.png")
' Load the image into QrImageInput
Private imageInput As New QrImageInput(inputBmp)
' Create the QR Reader object
Private reader As New QrReader()
' Read the Input an get all embedded QR Codes
Private results As IEnumerable(Of QrResult) = reader.Read(imageInput)
VB   C#

跨平台兼容性

  1. 桌面:與 Windows 桌面應用程序兼容 (WPF & MAUI)。

  2. 移動端:兼容 Xamarin 和 MAUI。

  3. 網頁端:支持 Blazor 和 WebForms。

  4. 控制台:應用程序和庫環境。

  5. 雲端:Docker、Azure 和 AWS。

編碼數據

您可以在QR碼中編碼各種類型的數據,包括文字、網址、字節和數字。

錯誤校正

IronQR 提供詳細的錯誤訊息和自訂的錯誤更正選項。

受數百萬人信賴,IronQR因其可靠性和易用性而受到世界各地工程師的信賴。要開始使用IronQR,您可以通過以下方式安裝它 NuGet.

步驟1:建立一個新的Visual Studio專案來生成QR碼

讓我們開始撰寫程式碼,首先建立一個 Visual Studio 專案。開啟 Microsoft Visual Studio 2022 並選擇「建立新專案」選項。

如何在 .NET 6 中使用 QRCoder 生成 QR code 與 IronQR 比較:圖 1 - 打開 Visual Studio 並點擊「Create a new project」選項

從模板列表中選擇主控台應用程式模板

如何在 .NET 6 中使用 QRCoder 與 IronQR 生成 QR code: 圖 2 - 選擇項目類型為「Console App」。

然後提供專案名稱與解決方案名稱。選擇儲存專案檔案的路徑

如何在 .NET 6 中使用 QRCoder 生成 QR 碼並與 IronQR 比較:圖 3 - 通過指定專案名稱、位置和解決方案名稱來配置您的專案,然後點擊下一步。

選擇所需的 .NET 版本。撰寫本文時,我會選擇最新的 .NET 8 框架。

如何在 .NET 6 中使用 QRCoder 生成 QR Code 與 IronQR 比較:圖 4 - 選擇最新的 .NET Framework 版本並點擊創建按鈕。

一旦您点击创建按钮,项目就创建完毕并可以开始开发。

步驟 2:安裝 QRCoder 和 IronQR NuGet 套件

QRCoder 可以按照如下所示使用 Visual Studio NuGet 套件管理器安裝 NuGet 套件。

如何使用QRCoder在 .NET 6 中生成QR碼並與IronQR進行比較:圖 5 - 使用解決方案的NuGet包管理器安裝QRCoder,在NuGet包管理器的搜索欄中搜索「QRCoder」,然後選擇項目並點擊安裝按鈕。

或使用以下命令從NuGet套件管理器主控台安裝

dotnet add package QRCoder --version 1.4.3
dotnet add package QRCoder --version 1.4.3
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package QRCoder --version 1.4.3
VB   C#

QRCoder NuGet 套件可以在NuGet網站上找到,請點擊這裡。

如何在 .NET 6 中使用 QRCoder 比較生成 QR 碼與 IronQR:圖 6 - QRCoder NuGet 套件

IronQR 也可以通過使用 Visual Studio NuGet 套件管理器進行安裝,如下所示。

如何使用 QRCoder 與 IronQR 在 .NET 6 中生成 QR 碼: 圖 7 - 通過在 NuGet 包管理器的搜索欄中搜索 IronQR,使用管理 NuGet 包來為解決方案安裝 IronQR,然後選擇項目並點擊 Install 按鈕。

從 NuGet 套件管理器控制台中,也可以使用以下命令

dotnet add package IronQR --version 2024.4.1
dotnet add package IronQR --version 2024.4.1
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronQR --version 2024.4.1
VB   C#

如何使用QRCoder生成 QR碼,與IronQR在 .NET 6中的比較:圖8 - IronQR NuGet套件

步驟 3:使用 QRCoder 和 IronQR 創建 QR 碼

在這兩個庫中創建 QR 碼只需簡單的代碼,讓我們來看看吧

QRCoder

以下程式碼顯示了如何使用 QRCoder 生成我們的第一個 QR 碼。

using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {
                var qrCodeImage = qrCode.GetGraphic(20);
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {
                var qrCodeImage = qrCode.GetGraphic(20);
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
Imports QRCoder
Imports System.Drawing
Namespace QRCoderVsIronQR
Public Class Program
	Public Shared Sub Main()
			Using qrGenerator As New QRCodeGenerator()
			Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
			Using qrCode = New QRCoder.BitmapByteQRCode(qrCodeData)
				Dim qrCodeImage = qrCode.GetGraphic(20)
				Dim file = Image.FromStream(New MemoryStream(qrCodeImage))
				file.Save("QrCoderDemo1.png")
			End Using
			End Using
			End Using
	End Sub
End Class
End Namespace
VB   C#

代碼說明

  1. 我們創建 QRCodeGenerator 並調用 CreateQrCode 方法來生成 QR 碼圖形

  2. 然後我們使用 QRCoder.BitmapByteQRCode 方法從 GetGraphic 方法獲取字節數組

  3. 然後我們使用 Image.FromStream 方法將字節流保存為圖像

  4. 輸出的 QR 碼可以見如下

輸出

如何使用 QRCoder 和 IronQR 在 .NET 6 中生成 QR 碼: 圖9 - 輸出: 使用 QRCoder 函式庫生成的 QR 碼圖像。

IronQR

以下程式碼示範如何使用 IronQR 生成 QR 碼:

using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
    public static void Main()
    {
            // Prepare a QR Code object
            QrCode theQrGen = QrWriter.Write("Awesome IronQR");
            // Save QR Code to memory
            AnyBitmap myQrImage = theQrGen.Save();
            // Save QR Code image to disk
            myQrImage.SaveAs("awesome.png");
        }
    }
}
using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
    public static void Main()
    {
            // Prepare a QR Code object
            QrCode theQrGen = QrWriter.Write("Awesome IronQR");
            // Save QR Code to memory
            AnyBitmap myQrImage = theQrGen.Save();
            // Save QR Code image to disk
            myQrImage.SaveAs("awesome.png");
        }
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Namespace QrCodeWithIronQR
Public Class Program
	Public Shared Sub Main()
			' Prepare a QR Code object
			Dim theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
			' Save QR Code to memory
			Dim myQrImage As AnyBitmap = theQrGen.Save()
			' Save QR Code image to disk
			myQrImage.SaveAs("awesome.png")
	End Sub
End Class
End Namespace
VB   C#

如您所見,程式碼量的差異很明顯。IronQR 生成程式碼所需的程式碼更少。

代碼說明

  1. 我們使用 QrWriter.Write 創建 QR 碼() 方法並傳遞內容。

  2. 然後使用Save將QR code保存到記憶體。() 方法。

  3. 最后,我們使用 SaveAs 保存圖像() 方法;

輸出

由於我使用的是試用版庫,所以輸出帶有IronQR水印。使用許可版本後,這將被移除。

如何使用 QRCoder 生成 QR 代碼與 IronQR 在 .NET 6 中的比較:圖 10 - 輸出:使用 IronQR 生成的 QR 代碼圖像

第四步:使用 QRCoder 和 IronQR 進行自定義選項

這兩個庫都支持自定義選項。讓我們看看一些可用的選項

我們可以在 QRCoder 中設置 QR 碼顏色,如下所示:

using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {                
                var qrCodeImage = qrCode.GetGraphic(20, [255,0,0], [0,255, 0]); // can also use html hex color notation
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {                
                var qrCodeImage = qrCode.GetGraphic(20, [255,0,0], [0,255, 0]); // can also use html hex color notation
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
Imports QRCoder
Imports System.Drawing
Namespace QRCoderVsIronQR
Public Class Program
	Public Shared Sub Main()
			Using qrGenerator As New QRCodeGenerator()
			Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
			Using qrCode = New QRCoder.BitmapByteQRCode(qrCodeData)
				Dim qrCodeImage = qrCode.GetGraphic(20, (255,0,0), (0,255, 0)) ' can also use html hex color notation
				Dim file = Image.FromStream(New MemoryStream(qrCodeImage))
				file.Save("QrCoderDemo1.png")
			End Using
			End Using
			End Using
	End Sub
End Class
End Namespace
VB   C#

代碼說明

  1. 我們創建 QRCodeGenerator 並調用 CreateQrCode 方法來生成 QR 碼圖形

  2. 然後我們使用 QRCoder.BitmapByteQRCode() 從 GetGraphic 方法獲取位元組數組的方法

  3. 在 GetGraphic 方法中,我們可以設置背景和線條顏色。我們使用了紅色 [255,0,0] 線條顏色的 R, G, B 顏色和綠色 [0,255,0] 用於背景。

  4. 然後我們使用 Image.FromStream 將字節流保存為圖像。() 方法

  5. 下面可以看到輸出的 QR Code

輸出

如何使用 QRCoder 在 .NET 6 中生成 QR 碼與 IronQR 比較:圖 11 - 輸出:使用 QRCoder 的自訂功能生成的彩色 QR 碼圖像。

我們可以通過以下代碼為 IronQR 二維碼生成設置顏色:

using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
public class Program
{
    public static void Main()
    {
            // Set options
            QrOptions options = new QrOptions(QrErrorCorrectionLevel.Medium, 20);
            // Create QR
            QrCode myQr = QrWriter.Write("IronQR Generation Demo 1", options);
            // Style options
            AnyBitmap logoBmp = new AnyBitmap("logo.png");
            QrStyleOptions style = new QrStyleOptions
            {
                BackgroundColor = Color.Aqua,
                Dimensions = 300, // px
                Margins = 10, // px
                Color = Color.Red,
                Logo = new QrLogo
                {
                    Bitmap = logoBmp,
                    Width = 100,
                    Height = 100,
                    CornerRadius = 2
                }
            };
            // Save QR Code
            AnyBitmap qrImage = myQr.Save(style);
            // Save QR Code to local disk
            qrImage.SaveAs("advancedQr.png");
        }
    }
}
using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
public class Program
{
    public static void Main()
    {
            // Set options
            QrOptions options = new QrOptions(QrErrorCorrectionLevel.Medium, 20);
            // Create QR
            QrCode myQr = QrWriter.Write("IronQR Generation Demo 1", options);
            // Style options
            AnyBitmap logoBmp = new AnyBitmap("logo.png");
            QrStyleOptions style = new QrStyleOptions
            {
                BackgroundColor = Color.Aqua,
                Dimensions = 300, // px
                Margins = 10, // px
                Color = Color.Red,
                Logo = new QrLogo
                {
                    Bitmap = logoBmp,
                    Width = 100,
                    Height = 100,
                    CornerRadius = 2
                }
            };
            // Save QR Code
            AnyBitmap qrImage = myQr.Save(style);
            // Save QR Code to local disk
            qrImage.SaveAs("advancedQr.png");
        }
    }
}
Imports IronQr
Imports IronSoftware.Drawing
namespace QrCodeWithIronQR Public Class Program
	Public Shared Sub Main()
			' Set options
			Dim options As New QrOptions(QrErrorCorrectionLevel.Medium, 20)
			' Create QR
			Dim myQr As QrCode = QrWriter.Write("IronQR Generation Demo 1", options)
			' Style options
			Dim logoBmp As New AnyBitmap("logo.png")
			Dim style As New QrStyleOptions With {
				.BackgroundColor = Color.Aqua,
				.Dimensions = 300,
				.Margins = 10,
				.Color = Color.Red,
				.Logo = New QrLogo With {
					.Bitmap = logoBmp,
					.Width = 100,
					.Height = 100,
					.CornerRadius = 2
				}
			}
			' Save QR Code
			Dim qrImage As AnyBitmap = myQr.Save(style)
			' Save QR Code to local disk
			qrImage.SaveAs("advancedQr.png")
	End Sub
End Class
}
VB   C#

使用 IronQR,有很多 自訂化選項在上述程式中,我們嘗試自訂背景顏色、QR 碼顏色、邊距。我們也可以設置尺寸。

代码说明

  1. 首先,我們創建選項對象來設置錯誤更正級別

  2. 然後使用 QrWriter.Write 準備 QR 碼() 方法

  3. 然後我們使用 QrStyleOptions 設置樣式選項

  4. 我們設置背景顏色、前景顏色、邊距、尺寸,還有添加一個標誌到 QR 碼中

  5. 然後我們將 QR 碼圖像保存到本地磁碟

輸出

如何使用 QRCoder 生成 QR 碼,與 IronQR 在 .NET 6 中的比較:圖 12 - 輸出:使用 IronQR 及其自訂化功能生成的彩色 QR 碼圖片。

授權

QR 編碼器 這是一個基於 MIT 許可證的套件,並在社群的幫助下開發。這個套件適合小預算的專案。使用者需要等社群解決問題,或者自行修復並將程式碼提交到 Git 存儲庫,等待拉取請求被批准。

IronQR 用於應用程式。它有來自 Iron Software.

IronQR 可以獲得。獲得的密鑰需要放在這裡的appSettings.json文件中:

{
   "IronQR.License.LicenseKey":"myKey"
}
{
   "IronQR.License.LicenseKey":"myKey"
}
If True Then
   "IronQR.License.LicenseKey":"myKey"
End If
VB   C#

結論

在 C# 之間進行選擇 QRCoderIronQR 這最終取決於您專案的具體需求。如果您需要一個免費且開源的QR碼生成庫,並且具有許多自定義選項,那麼由於其簡單性和廣泛的自定義選項,C# QRCoder 可能是首選。

如果您需要一個企業級的庫,不僅支持帶有自定義選項的QR碼生成,還支持QR碼讀取,那麼 IronQR 將成為最終選擇。因此,最終選擇IronQR函式庫,因其眾多優點和支持功能 Iron Software,開發人員可以輕鬆且安心地撰寫企業應用程式。

< 上一頁
如何在C#中創建QR碼生成器應用程式
下一個 >
如何在VB .NET中生成QR Code

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 17,050 查看許可證 >