在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在 C# 應用程式中建立 QR 碼是開發人員的一項常見需求,特別是對於涉及產品識別、票務或輕鬆分享 URL 和其他數據的應用程式。 有多個庫可用於在C#中生成QR碼。 兩個值得注意的選項是QRCoder和IronQR. 在這裡,我們將探索兩者,比較它們的功能、易用性、性能以及其他對於使用 .NET 6 的開發者來說相關的因素。在本文中,我們將深入對這些庫進行詳細比較,檢查它們的特性、易用性、許可證等,並提供程式碼範例來說明它們的使用。
建立一個新的 Visual Studio 專案以生成 QR 碼
安裝 QRCoder 和 IronQR NuGet 套件進行比較
使用 QRCoder 和 IronQR 創建 QR 碼
QRCoder是一個以C#撰寫的開源庫和QR Code實現程式,允許您在任何.NET應用程式中生成符合ISO/IEC 18004標準的QR Code。 這是一個輕量且易於使用的庫,無需依賴其他庫或網路堆疊。
以下是QRCoder的主要功能和優勢:
C#QR 編碼器提供簡單直觀的API,使開發者可以輕鬆生成QR碼/QR碼文本,幾乎不費力氣。 它的簡單性使所有技能水平的開發人員都能快速將 QR 碼生成集成到他們的項目中。
QRCoder 的一大特色是它能根據特定需求自訂 QR 碼。 開發人員可以調整參數,例如錯誤更正級別、大小、顏色,甚至在 QR 碼中嵌入徽標或圖像。
QRCoder 支援各種編碼格式,使開發者能夠將不同類型的數據編碼為 QR 碼。 無論是純文字、URL、聯絡資訊,還是 Wi-Fi 憑證,QRCoder 都能處理各種資料格式。
C# QRCoder 生成的 QR 碼質量很高,確保在不同設備和掃描條件下的可讀性和可靠性。 此可靠性對於 QR 碼作為連接實體和數位互動的橋樑的應用程式來說至關重要。
C# QRCoder 是一個開源專案,允許開發者為其開發做出貢獻,並確保持續改進和更新。 這種積極的社群參與促進了創新,並確保該程式庫在不斷演變的技術領域中保持相關性。
IronQR是一個由開發和維護的功能強大的 C# 二維碼庫Iron Software. 它允許 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 框架。
一旦您點擊創建按鈕,項目就會被創建並準備開發。
這QRCoderNuGet 套件可以使用 Visual Studio 的 NuGet 套件管理器進行安裝,如下所示。
或者使用以下命令從 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 碼的背景顏色、前景顏色、邊距、尺寸以及標誌。
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
在 C# 之間做選擇QRCoder和IronQR最終取決於您專案的具體需求。 如果您需要一個免費且開源的 QR 碼生成庫,並具有許多自訂選項,那麼由於其簡單性和廣泛的自訂選項,C# QRCoder 可能是您的首選。
如果您需要一個企業級的庫,不僅支持可自定義選項的 QR 碼生成,還支持 QR 碼讀取,那麼IronQR將成為最終選擇。因此,最終選擇IronQR函式庫,因其眾多優點和支持功能Iron Software,開發人員可以輕鬆且安心地撰寫企業應用程式。