在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在本教程中,我們將比較兩個廣泛使用的 C# 程式庫——IronBarcode 和 QrCoder——用於處理 QR 碼和條碼。
首先,簡要介紹這兩個庫:
IronBarcode 是由 Iron Software 創建和維護的一個庫,使 C# 軟體工程師能夠在 .NET 應用程式和網站中讀取和生成條碼及 QR 碼。 可在 NuGet 上使用,適用於所有 .NET Framework 和 .NET Core Framework。 IronBarcode 只需一行代碼即可讀取或寫入條碼。
QRCoder 是一個簡單的 C# 函式庫,允許您創建 QR 碼。 它不依賴於其他庫,並可在 NuGet 上以 .NET Framework 和 .NET Core PCL 版本獲得。
這兩個程式庫應具備以下主要功能:
生成條碼
我們將從這兩個庫中實現所有這些功能並比較它們的性能。
首先,我們在 Visual Studio 專案中安裝這兩個庫。 由於這兩個庫都有各自的 NuGet 套件,我們將通過 NuGet 套件管理器控制台來安裝它們。
要安裝IronBarcode,請在套件管理器主控台中輸入以下命令:
Install-Package BarCode
這將在我們的專案中安裝IronBarcode庫。
在套件管理器控制台中輸入以下命令
Install-Package QRCoder
這將在我們的專案中安裝 QrCoder 庫。
現在,我們將使用這兩個庫生成我們的第一個QR碼。
以下程式碼將生成 QR 碼。
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
var qrCode = QRCodeWriter.CreateQrCode("Iron Barcode Vs QrCoder");
qrCode.SaveAsPng(@"D:\Barcode Images\QrCodeByIronBarcode");
stopwatch.Stop();
Console.WriteLine($"Execution Time: {stopwatch.ElapsedMilliseconds} ms");
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
var qrCode = QRCodeWriter.CreateQrCode("Iron Barcode Vs QrCoder");
qrCode.SaveAsPng(@"D:\Barcode Images\QrCodeByIronBarcode");
stopwatch.Stop();
Console.WriteLine($"Execution Time: {stopwatch.ElapsedMilliseconds} ms");
Dim stopwatch As New Stopwatch()
stopwatch.Start()
Dim qrCode = QRCodeWriter.CreateQrCode("Iron Barcode Vs QrCoder")
qrCode.SaveAsPng("D:\Barcode Images\QrCodeByIronBarcode")
stopwatch.Stop()
Console.WriteLine($"Execution Time: {stopwatch.ElapsedMilliseconds} ms")
創建 Stopwatch
實例是為了測量程序的執行時間,以分析庫的效率。
IronBarcode 生成並儲存 QR Code 花費 3503 毫秒。
以下範例代碼將使用QrCoder生成QR碼。
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode("Iron Barcode Vs QrCoder", QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
qrCodeImage.Save(@"D:\Barcode Images\QrCodeByQrCoder.png");
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode("Iron Barcode Vs QrCoder", QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
qrCodeImage.Save(@"D:\Barcode Images\QrCodeByQrCoder.png");
Dim qrGenerator As New QRCodeGenerator()
Dim qrCodeData As QRCodeData = qrGenerator.CreateQrCode("Iron Barcode Vs QrCoder", QRCodeGenerator.ECCLevel.Q)
Dim qrCode As New QRCode(qrCodeData)
Dim qrCodeImage As Bitmap = qrCode.GetGraphic(20)
qrCodeImage.Save("D:\Barcode Images\QrCodeByQrCoder.png")
QrCoder 不提供將 QR 碼儲存為圖像的內建功能。 不過,我們可以通過將 QrCoder 解析為 Bitmap 對象來保存它。 我們可以使用 Bitmap 提供的保存功能來保存 QR 碼。
QrCoder 花費 592 毫秒來生成和保存 QR 碼。
IronBarcode 的執行時間為 3503 毫秒,而 QrCoder 只需 592 毫秒。 這使得 QrCoder 在性能方面比 IronBarcode 更佳。
在IronBarcode中生成QR碼要簡單得多,因為我們只需編寫兩行代碼。 使用 QrCoder 函式庫,只需五行代碼。
IronBarcode 還提供內建功能,可以將生成的 QR 碼儲存到檔案中,而 QrCoder 則無此功能。 我們需要創建一個位圖物件,以便將 QR 碼保存到文件中。這需要我們創建四個物件來使用 QrCoder 生成 QR 碼。 在IronBarcode中,我們只需要創建一個對象即可完成相同的操作。
接下來,我們將使用這兩個庫生成條碼。
以下代碼將使用 IronBarcode 生成條碼:
var barcode = BarcodeWriter.CreateBarcode("Iron Barcode Vs QrCoder", BarcodeEncoding.Code128);
barcode.SaveAsPng(@"D:\Barcode Images\BarcodeByIronBarcode.png");
var barcode = BarcodeWriter.CreateBarcode("Iron Barcode Vs QrCoder", BarcodeEncoding.Code128);
barcode.SaveAsPng(@"D:\Barcode Images\BarcodeByIronBarcode.png");
Dim barcode = BarcodeWriter.CreateBarcode("Iron Barcode Vs QrCoder", BarcodeEncoding.Code128)
barcode.SaveAsPng("D:\Barcode Images\BarcodeByIronBarcode.png")
使用 IronBarcode 生成條碼所需的執行時間如下:
生成條碼需要3756毫秒或3.76秒。
值得注意的是,QrCoder 庫不提供創建條碼的功能。 因此,如果您需要生成條碼,IronBarcode 是更好的選擇。
關於掃描QR碼,我們來看看哪個庫是最佳選擇。
以下程式碼將使用IronBarcode讀取QR碼。
BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\QrcodeByIronBarcode.png");
if (results != null)
{
foreach (BarcodeResult result in results)
{
Console.WriteLine("Extracted text from QR Code is: "+result.Text);
}
}
BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\QrcodeByIronBarcode.png");
if (results != null)
{
foreach (BarcodeResult result in results)
{
Console.WriteLine("Extracted text from QR Code is: "+result.Text);
}
}
Dim results As BarcodeResults = BarcodeReader.Read("D:\Barcode Images\QrcodeByIronBarcode.png")
If results IsNot Nothing Then
For Each result As BarcodeResult In results
Console.WriteLine("Extracted text from QR Code is: " & result.Text)
Next result
End If
IronBarcode 在讀取 QR 碼時返回一個 Enumerable
結果。 我們需要遍歷 Enumerable
以檢索每個結果。 此功能有助於從文件或包含多個 QR 碼的圖像中讀取 QR 碼。
使用IronBarcode需時3136毫秒或3.1秒。
QrCoder 庫不提供讀取或掃描 QR Code 的功能。
以下代碼將使用 IronBarcode 掃描條碼。
BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\BarcodeByIronBarcode.png");
if (results != null)
{
foreach (BarcodeResult result in results)
{
Console.WriteLine("Text Extracted from Barcode is: " + result.Text);
}
}
BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\BarcodeByIronBarcode.png");
if (results != null)
{
foreach (BarcodeResult result in results)
{
Console.WriteLine("Text Extracted from Barcode is: " + result.Text);
}
}
Dim results As BarcodeResults = BarcodeReader.Read("D:\Barcode Images\BarcodeByIronBarcode.png")
If results IsNot Nothing Then
For Each result As BarcodeResult In results
Console.WriteLine("Text Extracted from Barcode is: " & result.Text)
Next result
End If
IronBarcode 在讀取條碼後返回 Enumerable
作為結果。 我們需要遍歷它以獲取每個結果。 這對於從包含多個條碼的文件或圖像中讀取條碼非常有利。
上述程式碼生成的輸出為:
QrCoder 函式庫不提供讀取或掃描 QR Code 的功能。
現在,讓我們討論這兩個庫的許可選項。
IronBarcode 在開發過程中是免費的。 然而,它在 Visual Studio 開發環境之外的部署需要許可證。 授權價格範圍從 $749 到 $2999(美元). 如果您購買完整版本,您可以獲得折扣Iron Suite.
QrCoder 是開源的,因此不需要任何授權。 您可以自由地在任何類型的環境中使用它。 如果您喜歡開源開發,也可以貢獻其源代碼。
如果我們只需要生成 QR 碼的功能,QRCoder 是最佳選擇,因為它是免費使用的,無需任何支付或訂閱費用。
當我們需要超出生成 QR 碼的功能時,IronBarcode 是一個很好的選擇,例如:
下表比較了 IronBarcode 和 QrCoder。
IronBarcode for .NET 允許開發者在其 .NET 應用中僅用一行代碼讀取和寫入條形碼和 QR 碼。 該庫支持大多數條碼和QR碼標準,包括39/93/128、UPC A/E、EAN 8/13以及QR碼等。 該庫會自動預處理條碼圖像,提供旋轉、噪聲、失真和傾斜的校正,以提高速度和準確性。 IronBarcode 與 32 位和 64 位系統相容,支援所有 .NET 語言和多種平台,包括桌面、控制台、雲端以及行動和網路應用程式。 它還允許開發人員為 PDF、JPG、TIFF、GIF、BMP、PNG 和 HTML 文檔編寫條形碼和 QR 碼,並修改文本顏色、大小、旋轉和品質。 該庫是安全的,不使用網路服務或通過互聯網傳輸數據。 IronBarcode 提供免費試用,並提供三種許可選項,包括個人使用的 Lite 版本、最多 10 名開發人員團隊使用的 Professional 套餐,以及供公司使用的 Unlimited 套餐。
QRCoder 是一個 C# .NET 庫,根據 ISO/IEC 18004 生成 QR 碼,無需依賴其他庫。 它提供了多個 QR 代碼渲染類別,包括 QRCode、ArtQRCode、AsciiQRCode 等。 然而,不是所有的渲染器都可用于所有目標框架,並且.NET Standard/.NET >=5.0 版本有一些限制。 QRCoder 是免費的且不需要授權。
IronBarcode 比 QRCoder 更加多功能,因為它支持所有 .NET Framework 版本,擁有更廣泛的功能範圍,並提供 SaaS 和 OEM 再分發覆蓋。 IronBarcode 提供全面的文檔和24/7支持,而 QRCoder 則沒有。 IronBarcode 有授權費用,但考慮到它提供的功能和支援,這是合理的。
IronBarcode 是一個由Iron Software,同時還提供其他有用的庫,包括IronPDF, IronXL, IronOCR,和IronWebScraper. 購買完整的Iron Suite以顯著折扣獲得所有五種產品。
總而言之,IronBarcode 最適合需要同時處理條碼和 QR 碼並希望創建條碼生成器、QR 碼生成器、條碼讀取器和 QR 碼讀取器的人。 另一方面,QRCoder適合只需要建立QR碼生成器的人。