在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在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 碼中。無論是純文字、網址、聯絡資訊,還是 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。
網頁端:支持 Blazor 和 WebForms。
控制台:應用程序和庫環境。
您可以在QR碼中編碼各種類型的數據,包括文字、網址、字節和數字。
IronQR 提供詳細的錯誤訊息和自訂的錯誤更正選項。
受數百萬人信賴,IronQR因其可靠性和易用性而受到世界各地工程師的信賴。要開始使用IronQR,您可以通過以下方式安裝它 NuGet.
讓我們開始撰寫程式碼,首先建立一個 Visual Studio 專案。開啟 Microsoft Visual Studio 2022 並選擇「建立新專案」選項。
從模板列表中選擇主控台應用程式模板
然後提供專案名稱與解決方案名稱。選擇儲存專案檔案的路徑
選擇所需的 .NET 版本。撰寫本文時,我會選擇最新的 .NET 8 框架。
一旦您点击创建按钮,项目就创建完毕并可以开始开发。
QRCoder 可以按照如下所示使用 Visual Studio NuGet 套件管理器安裝 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 code保存到記憶體。() 方法。
由於我使用的是試用版庫,所以輸出帶有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,開發人員可以輕鬆且安心地撰寫企業應用程式。