使用 IRONQR

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

喬迪·巴迪亞
喬迪·巴迪亞
2024年4月29日
分享:

在C#中生成QR碼

在 C# 應用程式中建立 QR 碼是開發人員的一項常見需求,特別是對於涉及產品識別、票務或輕鬆分享 URL 和其他數據的應用程式。 有多個庫可用於在C#中生成QR碼。 兩個值得注意的選擇是QRCoderIronQR。 在這裡,我們將探索兩者,比較它們的功能、易用性、性能以及其他對於使用 .NET 6 的開發者來說相關的因素。在本文中,我們將深入對這些庫進行詳細比較,檢查它們的特性、易用性、許可證等,並提供程式碼範例來說明它們的使用。

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

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

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

  3. 使用 QRCoder 和 IronQR 創建 QR 碼

  4. 使用 QRCoder 和 IronQR 進行自定義選項

QR 編碼器

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

以下是QRCoder的主要功能和優勢:

1. 易於使用

C# QRCoder 提供了簡單明瞭的 API,使開發人員能夠輕鬆生成 QR 碼/ QR 碼文本,所需的努力最小。 它的簡單性使所有技能水平的開發人員都能快速將 QR 碼生成集成到他們的項目中。

2. 廣泛的自定義選項

QRCoder 的一大特色是它能根據特定需求自訂 QR 碼。 開發人員可以調整參數,例如錯誤更正級別、大小、顏色,甚至在 QR 碼中嵌入徽標或圖像。

3. 多種編碼格式

QRCoder 支援各種編碼格式,使開發者能夠將不同類型的數據編碼為 QR 碼。 無論是純文字、URL、聯絡資訊,還是 Wi-Fi 憑證,QRCoder 都能處理各種資料格式。

4. 高品質輸出

C# QRCoder 生成的 QR 碼質量很高,確保在不同設備和掃描條件下的可讀性和可靠性。 此可靠性對於 QR 碼作為連接實體和數位互動的橋樑的應用程式來說至關重要。

5. 開源和活躍開發

C# QRCoder 是一個開源專案,允許開發者為其開發做出貢獻,並確保持續改進和更新。 這種積極的社群參與促進了創新,並確保該程式庫在不斷演變的技術領域中保持相關性。

IronQR

IronQR 是由 Iron Software 開發和維護的強大 C# 二維碼程式庫。 它允許 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")
$vbLabelText   $csharpLabel

QR 碼讀取

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)
$vbLabelText   $csharpLabel

跨平台相容性

  1. 桌面:適用於 Windows 桌面應用程式(WPF 和 MAUI)。

  2. 行動裝置:相容於 Xamarin 和 MAUI。

  3. Web:支援 Blazor 和 WebForms。

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

  5. 雲端:Docker、Azure 和 AWS。

編碼數據

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

錯誤校正

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

IronQR 擁有數百萬人的信賴,其可靠性和易用性得到全球工程師的信任。 要開始使用 IronQR,您可以通過NuGet 安裝。

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

要開始編寫程式碼,讓我們建立一個Visual Studio專案。 打開 Microsoft Visual Studio 2022,然後選擇「建立新專案」選項。

如何使用 QRCoder 在 .NET 6 中生成 QR 碼與 IronQR 的對比:圖 1 - 打開 Visual Studio 並點擊「創建新專案」選項

從模板清單中選擇主控台應用程式模板

如何在 .NET 6 中使用 QRCoder 生成 QR 代碼,相較於 IronQR 的方法:圖 2 - 選擇專案類型為「主控台應用程式」。

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

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

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

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

一旦您點擊創建按鈕,項目就會被創建並準備開發。

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

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

如何在 .NET 6 中使用 QRCoder 生成 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
$vbLabelText   $csharpLabel

QRCoder NuGet 套件可在 NuGet 網站上獲得,請點此查看。

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

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

在.NET 6中使用QRCoder生成QR碼與IronQR的比較:圖7 - 在NuGet套件管理器的搜索欄輸入"IronQR",然後選擇專案並點擊安裝按鈕來使用管理解決方案的NuGet套件安裝IronQR。

同樣從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
$vbLabelText   $csharpLabel

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

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

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

QR 編碼器

以下代碼顯示了如何使用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
$vbLabelText   $csharpLabel

程式碼說明

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

  2. 然後,我們使用 QRCoder.BitmapByteQRCode 方法從 GetGraphic 方法獲取位元組陣列。

  3. 然後我們使用 Image.FromStream 方法將位元流儲存為圖像。

  4. 下面可以看到輸出的 QR 碼

輸出

如何在 .NET 6 中使用 QRCoder 生成 QR 码,與 IronQR 比較:圖 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
$vbLabelText   $csharpLabel

正如您已經看到的,程式碼量的差異。 IronQR 代碼生成需要更少的代碼。

程式碼說明

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

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

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

輸出

由於我使用的是該庫的試用版,因此輸出帶有 IronQR 的浮水印。 使用授權版本後,此項將被移除。

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

步驟 4:使用 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
$vbLabelText   $csharpLabel

程式碼說明

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

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

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

  4. 然後我們使用 Image.FromStream() 方法將位元組流另存為影像。

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

輸出

如何使用 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
}
$vbLabelText   $csharpLabel

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

程式碼說明

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

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

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

  4. 我們設置了 QR 碼的背景顏色、前景顏色、邊距、尺寸以及標誌。

  5. 然後我們將 QR code 圖像儲存到本地磁碟。

輸出

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

授權

QRCoder 是一個基於 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
$vbLabelText   $csharpLabel

結論

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

如果您需要一個企業級的庫,不僅支持自訂選項的 QR 碼生成,還支持 QR 碼讀取,那麼IronQR將是您的最佳選擇。因此,通過使用 IronQR 庫,加上來自Iron Software的多項優勢和支持功能,開發者可以輕鬆且安心地撰寫企業應用程式。

喬迪·巴迪亞
軟體工程師
Jordi 最擅長 Python、C# 和 C++,當他不在 Iron Software 發揮技能時,他會進行遊戲編程。他負責產品測試、產品開發和研究,為持續產品改進增添了巨大的價值。多樣化的經驗使他感到挑戰和投入,他說這是與 Iron Software 合作的最喜歡的方面之一。Jordi 在佛羅里達州邁阿密長大,並在佛羅里達大學學習計算機科學和統計學。
< 上一頁
如何在C#中創建QR碼生成器應用程式
下一個 >
如何在VB .NET中生成QR Code

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

查看許可證 >