使用 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 Code實現程式,允許您在任何.NET應用程式中生成符合ISO/IEC 18004標準的QR Code。 這是一個輕量且易於使用的庫,無需依賴其他庫或網路堆疊。

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

1. 易於使用

C#QR 編碼器提供簡單直觀的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是一個由開發和維護的功能強大的 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 碼讀取

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. Web:支援 Blazor 和 WebForms。

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

  5. 雲端:Docker、Azure 和 AWS。

編碼數據

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

錯誤校正

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

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

步驟一:創建一個新的 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 套件

QRCoderNuGet 套件可以使用 Visual Studio 的 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 碼只需要簡單的程式碼,讓我們來看看吧。

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
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 碼儲存到記憶體中()方法。

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

輸出

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

如何使用 QRCoder 生成 QR 代碼與 IronQR 在 .NET 6 中的比較:圖 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
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 碼

輸出

如何使用 QRCoder 生成功能的 QR 碼,與 IronQR 在 .NET 6 的比較:圖 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 code 圖像儲存到本地磁碟。

輸出

如何在 .NET 6 中使用 QRCoder 生成 QR 碼並與 IronQR 比較:圖 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.12 剛剛發布

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