在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在本教程中,我們將比較兩個廣泛使用的 C# 程式庫——IronBarcode 和 QrCoder——用於處理 QR 碼和條碼。
讓我們首先簡要介紹這兩個程式庫:
IronBarcode 是 Iron Software 創建和維護的一個庫,使 C# 軟體工程師能夠在 .NET 應用和網站中讀取和寫入條形碼和 QR 碼。該庫在所有 .NET Framework 和 .NET Core Framework 中通過 NuGet 提供。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 Code。
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 生成並保存 QR Code 需時 592 毫秒。
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 是更好的選擇。
關於二維碼掃描,讓我們看看哪個庫是最佳選擇。
以下程式碼將使用 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 ,您可以獲得折扣 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 是一個基於 ISO/IEC 18004 的 C# .NET 庫,可以生成 QR 碼,且不依賴於其他庫。它提供幾個 QR 碼渲染類,包括 QRCode、ArtQRCode、AsciiQRCode 等等。然而,並非所有渲染器都適用於所有目標框架,.NET Standard/.NET >=5.0 的版本有一些限制。QRCoder 是免費的,並且不需要許可。
相較於 QRCoder,IronBarcode 更加多功能,因為它支持所有 .NET Framework 版本,擁有更廣範圍的功能,並提供 SaaS 和 OEM 重新分發覆蓋。IronBarcode 還提供全面的文檔和 24/7 支持,而 QRCoder 則沒有。IronBarcode 需要付費許可,但考慮到它提供的功能和支持,這個費用是合理的。
IronBarcode 是由 Iron Software,同時還提供其他有用的庫,包括 IronPDF, IronXL, IronOCR,和 IronWebScraper購買完整的 Iron Suite 以驚人折扣獲得所有五款產品。
總結來說,IronBarcode 最適合需要同時處理條形碼和 QR 碼的用戶,並且希望創建條形碼生成器、QR 碼生成器、條形碼閱讀器和 QR 碼閱讀器。另一方面,QRCoder 適合那些只需要創建 QR 碼生成器的用戶。