在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
在 C# 應用程式中建立 QR 碼是開發人員的一項常見需求,特別是對於涉及產品識別、票務或輕鬆分享 URL 和其他數據的應用程式。 有多個庫可用於在C#中生成QR碼。 兩個值得注意的選擇是QRCoder 和 IronQR。 在這裡,我們將探索兩者,比較它們的功能、易用性、性能以及其他對於使用 .NET 6 的開發者來說相關的因素。在本文中,我們將深入對這些庫進行詳細比較,檢查它們的特性、易用性、許可證等,並提供程式碼範例來說明它們的使用。
建立一個新的 Visual Studio 專案以生成 QR 碼
安裝 QRCoder 和 IronQR NuGet 套件進行比較
使用 QRCoder 和 IronQR 創建 QR 碼
QRCoder 是一個用 C# 編寫的開源庫和 QR 碼實現,允許您在任何 .NET 應用程式中生成符合 ISO/IEC 18004 定義的 QR 碼。 這是一個輕量且易於使用的庫,無需依賴其他庫或網路堆疊。
以下是QRCoder的主要功能和優勢:
C# QRCoder 提供了簡單明瞭的 API,使開發人員能夠輕鬆生成 QR 碼/ QR 碼文本,所需的努力最小。 它的簡單性使所有技能水平的開發人員都能快速將 QR 碼生成集成到他們的項目中。
QRCoder 的一大特色是它能根據特定需求自訂 QR 碼。 開發人員可以調整參數,例如錯誤更正級別、大小、顏色,甚至在 QR 碼中嵌入徽標或圖像。
QRCoder 支援各種編碼格式,使開發者能夠將不同類型的數據編碼為 QR 碼。 無論是純文字、URL、聯絡資訊,還是 Wi-Fi 憑證,QRCoder 都能處理各種資料格式。
C# QRCoder 生成的 QR 碼質量很高,確保在不同設備和掃描條件下的可讀性和可靠性。 此可靠性對於 QR 碼作為連接實體和數位互動的橋樑的應用程式來說至關重要。
C# QRCoder 是一個開源專案,允許開發者為其開發做出貢獻,並確保持續改進和更新。 這種積極的社群參與促進了創新,並確保該程式庫在不斷演變的技術領域中保持相關性。
IronQR 是由 Iron Software 開發和維護的強大 C# 二維碼程式庫。 它允許 C# 軟體工程師在 .NET 應用程式和網站中檢測、讀取和創建 QR 碼。 以下是IronQR的一些主要特點:
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")
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)
桌面:適用於 Windows 桌面應用程式(WPF 和 MAUI)。
行動裝置:相容於 Xamarin 和 MAUI。
Web:支援 Blazor 和 WebForms。
控制台:應用程式和程式庫環境。
您可以在 QR 碼中編碼各種類型的數據,包括文字、網址、位元組和數字。
IronQR 提供詳細的錯誤訊息和自訂的錯誤修正選項。
IronQR 擁有數百萬人的信賴,其可靠性和易用性得到全球工程師的信任。 要開始使用 IronQR,您可以通過NuGet 安裝。
要開始編寫程式碼,讓我們建立一個Visual Studio專案。 打開 Microsoft Visual Studio 2022,然後選擇「建立新專案」選項。
從模板清單中選擇主控台應用程式模板
然後提供專案名稱和解決方案名稱。 選擇存放專案檔案的路徑
選擇所需的 .NET 版本。 在撰寫本文時,我將選擇最新的 .NET 8 框架。
一旦您點擊創建按鈕,項目就會被創建並準備開發。
可以使用 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
QRCoder NuGet 套件可在 NuGet 網站上獲得,請點此查看。
IronQR 也可以使用 Visual Studio 的 NuGet 套件管理器進行類似的安裝,如下所示。
同樣從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
在這兩個庫中創建 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
我們創建QRCodeGenerator並調用CreateQrCode方法來生成QR碼圖形。
然後,我們使用 QRCoder.BitmapByteQRCode 方法從 GetGraphic 方法獲取位元組陣列。
然後我們使用 Image.FromStream 方法將位元流儲存為圖像。
以下代碼展示如何使用 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
正如您已經看到的,程式碼量的差異。 IronQR 代碼生成需要更少的代碼。
我們使用 QrWriter.Write() 方法並傳遞內容來創建 QR 碼。
然後使用 Save() 方法將 QR 碼儲存到記憶體。
由於我使用的是該庫的試用版,因此輸出帶有 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
我們創建QRCodeGenerator並調用CreateQrCode方法來生成QR碼圖形。
然後,我們使用 QRCoder.BitmapByteQRCode() 方法從 GetGraphic 方法獲取字節數組
在 GetGraphic 中,我們可以設置背景和線條顏色。 我們使用紅色 [255,0,0] R,G,B 顏色作為線條顏色,綠色 [0,255,0] 作為背景。
然後我們使用 Image.FromStream() 方法將位元組流另存為影像。
我們可以像下面的程式碼一樣為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
}
使用 IronQR,有許多自訂選項。 在上述程式中,我們嘗試自訂背景顏色、QR碼顏色、邊距。 我們也可以設置尺寸。
首先,我們創建選項對象來設定錯誤更正級別。
然後我們使用 QrWriter.Write() 方法準備 QR 碼
然後我們使用 QrStyleOptions 設定樣式選項。
我們設置了 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
在 C# 中選擇 QRCoder 和 IronQR 最終取決於您專案的具體需求。 如果您需要一個免費且開源的 QR 碼生成庫,並具有許多自訂選項,那麼由於其簡單性和廣泛的自訂選項,C# QRCoder 可能是您的首選。
如果您需要一個企業級的庫,不僅支持自訂選項的 QR 碼生成,還支持 QR 碼讀取,那麼IronQR將是您的最佳選擇。因此,通過使用 IronQR 庫,加上來自Iron Software的多項優勢和支持功能,開發者可以輕鬆且安心地撰寫企業應用程式。