```html Tuyên bố miễn trừ trách nhiệm đầy đủ: Chúng tôi là đội ngũ phát triển quan hệ tại Iron Software, công ty đứng sau IronQR, một trong những thư viện trong bảng so sánh này. Tuy nhiên, chúng tôi tin rằng các đánh giá trung thực sẽ phục vụ mọi người tốt hơn là những lời quảng cáo tiếp thị. Chúng tôi sẽ trình bày phương pháp luận của mình, thừa nhận những thành kiến của chúng tôi và để mã nguồn tự nói lên tất cả. Chúng tôi đã áp dụng các tiêu chí đánh giá giống hệt nhau cho mỗi thư viện mã QR C#: tạo mã QR đơn giản, đọc mã QR từ hình ảnh, chiều sâu tùy chỉnh, hỗ trợ đa nền tảng và chi phí cấp phép. Dưới đây là kết quả, một bảng so sánh 11 thư viện mã QR đáng chú ý trong hệ sinh thái .NET, được thiết kế để giúp bạn chọn đúng thư viện cho dự án của mình ngay từ lần đầu tiên. Đây là giao diện của ba dòng tạo mã QR với trong Visual Studio, một trong những thư viện mà chúng tôi sẽ đề cập: IronQR using IronQr; using IronSoftware.Drawing; QrCode qr = QrWriter.Write("https://example.com"); AnyBitmap bitmap = qr.Save(); bitmap.SaveAs("myqr.png"); Ví dụ về đầu ra mã QR của IronQR Sự đơn giản đó là yêu cầu cơ bản. Câu hỏi thực sự là điều gì xảy ra khi bạn cần một mã QR bị hỏng từ máy quét kho hàng, nhúng một logo thương hiệu, nhắm mục tiêu vào các container Linux hoặc xử lý hàng nghìn mã trong một công việc hàng loạt. Đó là nơi các thư viện khác nhau, và nơi bảng so sánh này phát huy tác dụng. đọc Tóm tắt: Bảng so sánh tổng thể Trước khi đi sâu vào chi tiết, đây là bức tranh toàn cảnh. Bảng này nắm bắt các khía cạnh quan trọng nhất khi chọn một thư viện QR cho dự án .NET. Thư viện Tạo Đọc Logo/Kiểu dáng Micro QR Đa nền tảng Giấy phép Tải xuống NuGet IronQR ✅ ✅ Được hỗ trợ bởi ML ✅ Toàn diện ✅ + RMQR ✅ Win/Mac/Linux/Di động Thương mại (749$ trở lên) ~56K QRCoder ✅ ❌ ✅ Trung bình ✅ ⚠️ Một phần (System.Drawing) MIT (Miễn phí) ~68M ZXing.Net ✅ ✅ ❌ Tối thiểu ❌ ⚠️ Qua các liên kết Apache 2.0 (Miễn phí) ~32M Net.Codecrete.QrCodeGenerator ✅ ❌ ❌ ❌ ✅ MIT (Miễn phí) ~4.1M SkiaSharp.QrCode ✅ ❌ ✅ Hình dạng tùy chỉnh ❌ ✅ MIT (Miễn phí) ~1.2M Aspose.BarCode ✅ ✅ ✅ ✅ ✅ Thương mại (999$ trở lên) ~5.4M Syncfusion Barcode ✅ ❌ ✅ Trung bình ❌ ✅ (Thành phần UI) Thương mại (Cộng đồng miễn phí) ~2M+ Spire.Barcode ✅ ✅ ✅ Nhúng logo ❌ ⚠️ (System.Drawing) Thương mại (599$ trở lên) ~450K IronBarcode ✅ ✅ ✅ ✅ Micro QR ✅ Win/Mac/Linux Thương mại (749$ trở lên) ~1.2M Dynamsoft Barcode Reader ❌ ✅ Hiệu suất cao N/A ✅ ✅ Thương mại (1.249$+/năm) ~250K BarcodeLib ✅ ❌ ❌ ❌ ⚠️ (System.Drawing) Apache 2.0 (Miễn phí) ~4.5M Bảng 1: So sánh tổng thể 11 thư viện mã QR .NET dựa trên các tiêu chí lựa chọn chính. Số lượt tải xuống là xấp xỉ tính đến đầu năm 2026. Phần còn lại của bài viết sẽ phân tích chi tiết từng mục, kèm theo mã nguồn, những đánh đổi và đánh giá trung thực. Chúng tôi đã đánh giá các thư viện này như thế nào? Chúng tôi đã đánh giá mỗi thư viện dựa trên bảy tiêu chí, được trọng số hóa theo mức độ ảnh hưởng của chúng đến các quyết định lựa chọn trong thế giới thực: — Nó có thể tạo mã QR từ chuỗi, URL và dữ liệu có cấu trúc (vCard, thông tin xác thực Wi-Fi) không? Tạo mã QR — Nó có thể giải mã mã QR từ hình ảnh, bản quét hoặc PDF không? Nó xử lý các mã bị hỏng hoặc xoay như thế nào? Đọc mã QR — Nhúng logo, kiểm soát màu sắc, kiểu dáng hình dạng module, cấu hình sửa lỗi Tùy chỉnh — QR tiêu chuẩn, Micro QR, RMQR (Micro QR hình chữ nhật) Hỗ trợ định dạng QR — Nó có chạy tốt trên Windows, Linux, macOS và bên trong các container Docker mà không cần các thủ thuật System.Drawing không? Đa nền tảng — Mã nguồn mở so với thương mại, định giá theo nhà phát triển, giảm giá theo bộ sản phẩm Cấp phép & Chi phí — Chất lượng tham chiếu API, tính sẵn có của hướng dẫn, quy mô cộng đồng, bảo trì tích cực Tài liệu & Hệ sinh thái Tất cả các ví dụ mã đều nhắm mục tiêu và sử dụng các câu lệnh cấp cao. Khi .NET 10 giới thiệu các cải tiến có liên quan, chúng tôi sẽ ghi nhận chúng. .NET 8 (LTS) Nên chọn thư viện QR nào? Khung quyết định Bỏ qua phần giới thiệu 11 thư viện bên dưới nếu bạn đã biết các ràng buộc của mình. Đây là con đường nhanh chóng: → hoặc . Cả hai đều được cấp phép MIT. QRCoder có nhiều trình kết xuất và trợ giúp tải trọng hơn; Net.Codecrete nhẹ hơn và hoàn toàn tránh System.Drawing. "Tôi cần tạo mã QR miễn phí mà không có phụ thuộc nào." QRCoder Net.Codecrete.QrCodeGenerator → (đọc được hỗ trợ bởi ML, độ chính xác tốt nhất trên các mã bị hỏng), (miễn phí, đã được kiểm chứng, hỗ trợ định dạng rộng nhất), hoặc (bộ sản phẩm doanh nghiệp, đắt tiền). "Tôi cần cả tạo VÀ đọc mã QR." IronQR ZXing.Net Aspose.BarCode → , , hoặc . Cả ba đều tránh phụ thuộc System.Drawing làm ảnh hưởng đến việc triển khai đa nền tảng. "Tôi đang triển khai trên Linux/Docker và không thể sử dụng System.Drawing." IronQR SkiaSharp.QrCode Net.Codecrete.QrCodeGenerator → dẫn đầu trong các bài kiểm tra hiệu suất tạo mã. Đối với hiệu suất đọc, được thiết kế chuyên dụng cho quét thông lượng cao. "Hiệu suất và dấu chân bộ nhớ là rất quan trọng." SkiaSharp.QrCode Dynamsoft Barcode Reader → Sử dụng những gì bạn có. Việc thêm thư viện mã QR của một nhà cung cấp khác khi bộ sản phẩm của bạn đã bao gồm một thư viện thường không hợp lý về mặt cấp phép hoặc bảo trì. "Tôi đã sử dụng bộ sản phẩm Aspose/Syncfusion/Iron Software." → có hướng dẫn tích hợp MAUI và Blazor rõ ràng. Microsoft MVP Jeff Fritz sử dụng IronQR với Blazor, một ví dụ thực tế về mẫu này. "Tôi đang xây dựng ứng dụng di động Blazor/MAUI có quét mã QR." IronQR đã xây dựng một ứng dụng danh thiếp kỹ thuật số dựa trên mã QR So sánh 11 thư viện mã QR .NET 1. IronQR — Đọc và tạo mã QR được hỗ trợ bởi ML với hỗ trợ đa nền tảng IronQR là thư viện mã QR chuyên dụng của Iron Software, tách biệt với sản phẩm IronBarcode rộng hơn của họ. Tính năng nổi bật của nó là một mô hình học máy (dựa trên ) phát hiện và đọc mã QR từ các hình ảnh không hoàn hảo, bị xoay, bị che một phần hoặc được chụp ở các góc khác nhau, thường chỉ trong vài dòng mã. ONNX Nó cũng có khả năng tạo đối tượng mã QR một cách dễ dàng, với hỗ trợ tạo kiểu mã QR bằng hình ảnh, thêm màu tùy chỉnh và lưu hình ảnh QR của bạn sang các định dạng đầu ra khác nhau. Tạo: using IronQr; using IronSoftware.Drawing; // Tạo một mã QR được tạo kiểu với logo var options = new QrOptions(QrErrorCorrectionLevel.High, 20); QrCode qr = QrWriter.Write("https://example.com", options); var style = new QrStyleOptions { Dimensions = 300, Margins = 10, Color = new Color("#2E75B6"), Logo = new QrLogo { Bitmap = AnyBitmap.FromFile("logo.png"), Width = 80, Height = 80 } }; AnyBitmap styledQr = qr.Save(style); styledQr.SaveAs("branded-qr.png"); Đầu ra mã QR được tạo bởi IronQR Đọc: using IronQr; using IronSoftware.Drawing; var reader = new QrReader(); var input = new QrImageInput(AnyBitmap.FromFile("scanned-qr.jpg")); IEnumerable<QrResult> results = reader.Read(input); foreach (var result in results) Console.WriteLine($"Value: {result.Value}"); Đầu ra đọc của IronQR Mô hình ML là yếu tố phân biệt IronQR với tất cả các thư viện khác trong danh sách này. Trong quá trình thử nghiệm của chúng tôi, nó đã giải mã thành công các mã QR từ ảnh thẻ hội nghị và ảnh chụp màn hình góc cạnh của điện thoại thông minh, nơi ZXing.Net và các trình đọc xử lý ảnh cơ bản trả về kết quả không có gì. Sự đánh đổi là kích thước gói, mô hình ONNX làm tăng trọng lượng. Nếu bạn không cần chức năng đọc, IronQR.Slim có thể được sử dụng mà không có mô hình ML và nhẹ hơn đáng kể. Ưu điểm: Đọc được hỗ trợ bởi ML xử lý các mã QR bị hỏng, xoay và che một phần, ưu tiên độ chính xác Hỗ trợ các định dạng QR Code, Micro QR và RMQR (Micro QR hình chữ nhật) API tạo kiểu toàn diện: màu sắc, logo, module bo tròn, lề Đa nền tảng: Windows, macOS, Linux, iOS, Android, Docker, Azure, AWS Hỗ trợ đọc bất đồng bộ (ReadAsync) cho khối lượng công việc máy chủ Lưu sang nhiều định dạng như ảnh PNG, JPG, TIFF nhiều trang và hơn thế nữa API thân thiện với người dùng giúp dễ dàng sử dụng Hạn chế: Yêu cầu giấy phép thương mại (749$ trở lên cho mỗi nhà phát triển để triển khai) Gói đầy đủ nặng hơn các giải pháp mã nguồn mở do mô hình ML thấp hơn các tùy chọn mã nguồn mở trưởng thành, sản phẩm mới hơn (ra mắt ~2023) Số lượt tải xuống NuGet Các dự án chỉ tạo mã có thể không cần đến chi phí xử lý của ML Các dự án cần cả tạo và đọc, đặc biệt là khi điều kiện quét không hoàn hảo (ứng dụng di động, quét kho hàng, tình huống hội nghị/sự kiện). minh họa IronQR xử lý việc tạo mã QR thời gian thực với Blazor và tùy chỉnh thương hiệu. Tốt nhất cho: Nghiên cứu điển hình về danh thiếp mã QR của Jeff Fritz 2. — Trình tạo mã QR mã nguồn mở phổ biến nhất QRCoder Thư viện QRCoder là gói mã QR được tải xuống nhiều nhất trên NuGet, với . Ban đầu được tạo bởi Raffael Herrmann vào năm 2013 và hiện , đây là một triển khai C# thuần túy tập trung hoàn toàn vào việc mã QR (không đọc). hơn 68 triệu lượt tải xuống được bảo trì bởi Shane32 tạo using QRCoder; // Tạo mã QR và lưu dưới dạng byte PNG using var qrGenerator = new QRCodeGenerator(); using var qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.H); using var pngQrCode = new PngByteQRCode(qrCodeData); byte[] qrCodeImage = pngQrCode.GetGraphic(20); File.WriteAllBytes("qrcoder-output.png", qrCodeImage); Đầu ra của QRCoder QRCoder cung cấp nhiều trình kết xuất: PngByteQRCode (đa nền tảng, không có phụ thuộc System.Drawing), QRCode (dựa trên System.Drawing, chỉ Windows), SvgQRCode, AsciiQRCode và hơn thế nữa. Nó cũng bao gồm các trình tạo tải trọng cho dữ liệu có cấu trúc như thông tin xác thực Wi-Fi, vCard và dấu trang, giúp bạn tiết kiệm thời gian định dạng các chuỗi đó thủ công. Ưu điểm: Giấy phép MIT, hoàn toàn miễn phí cho mục đích thương mại Hơn 68 triệu lượt tải xuống NuGet, sự chấp nhận rộng rãi của cộng đồng và độ ổn định đã được chứng minh Nhiều tùy chọn trình kết xuất bao gồm PngByteQRCode tránh System.Drawing Trình tạo tải trọng tích hợp sẵn (Wi-Fi, vCard, địa lý, sự kiện lịch) Hỗ trợ mã Micro QR Không phụ thuộc vào mục tiêu .NET Standard Hạn chế: , không thể đọc hoặc giải mã các tệp hình ảnh mã QR Chỉ tạo mã Một số trình kết xuất (như QRCode) phụ thuộc vào System.Drawing.Common, chỉ dành cho Windows kể từ .NET 6 Không có tính năng nhúng logo tích hợp sẵn (bạn sẽ tự ghép ảnh) Không có tạo kiểu nâng cao (hình dạng module, gradient) Các dự án chỉ cần tạo mã QR, đặc biệt là khi ngân sách bằng không. Nếu bạn cần tạo mã QR Wi-Fi hoặc vCard và hoàn toàn không cần đọc mã, QRCoder là lựa chọn mặc định thực tế cho hầu hết các nhà phát triển .NET. Tốt nhất cho: 3. — Dao đa năng của các thư viện mã vạch ZXing.Net ("Zebra Crossing") là bản của thư viện ZXing Java gốc. Đây là thư viện mã vạch đa dụng hỗ trợ hơn 15 định dạng, QR Code, Data Matrix, Aztec, PDF 417, UPC, EAN, Code 128 và hơn thế nữa. Hỗ trợ QR là một tập hợp con của các khả năng rộng hơn của nó. ZXing.Net port sang .NET using ZXing; using ZXing.Common; using ZXing.QrCode; // Tạo mã QR var writer = new BarcodeWriterPixelData { Format = BarcodeFormat.QR_CODE, Options = new QrCodeEncodingOptions { Height = 250, Width = 250, Margin = 1 } }; var pixelData = writer.Write("https://example.com"); // Đọc mã QR yêu cầu gói liên kết (ví dụ: ZXing.Net.Bindings.SkiaSharp) Đầu ra của ZXing.Net ZXing.Net yêu cầu các gói liên kết dành riêng cho nền tảng để kết xuất và đọc. Gói cốt lõi cung cấp logic mã hóa/giải mã; bạn thêm ZXing.Net.Bindings.Windows.Compatibility, ZXing.Net.Bindings.SkiaSharp, hoặc ZXing.Net.Bindings.ImageSharp tùy thuộc vào nền tảng mục tiêu của bạn. Cách tiếp cận theo module này rất linh hoạt nhưng làm tăng độ phức tạp khi tích hợp. Ưu điểm: Giấy phép Apache 2.0, miễn phí cho mục đích thương mại Cả tạo và đọc trong một thư viện Hỗ trợ hơn 15 định dạng mã vạch ngoài mã QR , đã được kiểm chứng, kiến thức cộng đồng sâu rộng Hơn 32 triệu lượt tải xuống NuGet Có sẵn các liên kết cho SkiaSharp, ImageSharp, OpenCV và hơn thế nữa Hạn chế: Các tính năng dành riêng cho QR rất cơ bản, không nhúng logo, không có tạo kiểu nâng cao Độ chính xác khi đọc mã QR bị hỏng/xoay ở mức trung bình so với các giải pháp được hỗ trợ bởi ML Các gói liên kết làm tăng độ phức tạp quản lý phụ thuộc Thiết kế API cho thấy nó đã cũ, kém trôi chảy hơn các thư viện .NET hiện đại Tốc độ bảo trì tích cực đã chậm lại (được cộng đồng bảo trì) Các dự án cần cả hỗ trợ mã QR và mã vạch truyền thống (bán lẻ, hậu cần) và muốn có một tùy chọn miễn phí, đã được chứng minh. Nếu ưu tiên của bạn là các tính năng dành riêng cho QR như tạo kiểu hoặc đọc được hỗ trợ bởi ML thay vì phạm vi hỗ trợ mã vạch rộng, một thư viện QR chuyên dụng sẽ phục vụ bạn tốt hơn. Tốt nhất cho: 4. Net.Codecrete.QrCodeGenerator — Nhẹ và tập trung vào tiêu chuẩn Net.Codecrete.QrCodeGenerator là một thư viện tạo mã QR sạch sẽ, tối giản của Manuel Bleichenbacher. Đây là bản , tập trung vào tính chính xác và tuân thủ tiêu chuẩn ( ). dịch sang .NET của trình tạo mã QR Java của Project Nayuki ISO/IEC 18004 using Net.Codecrete.QrCodeGenerator; var qr = QrCode.EncodeText("https://example.com", QrCode.Ecc.Medium); string svg = qr.ToSvgString(4); File.WriteAllText("output.svg", svg); Ví dụ đầu ra với Net.Codecrete.QrCodeGenerator Với , nó được chấp nhận rộng rãi cho một thư viện tập trung. Chất lượng nổi bật của nó là không có phụ thuộc vào System.Drawing — nó tạo SVG, dữ liệu đường dẫn XAML, PNG và BMP gốc. Điều này làm cho nó trở thành một lựa chọn tuyệt vời cho các dự án .NET đa nền tảng và các dịch vụ ASP.NET Core chạy trong Docker. ~4,1 triệu lượt tải xuống NuGet Ưu điểm: Giấy phép MIT, hoàn toàn miễn phí Không phụ thuộc System.Drawing, thực sự đa nền tảng Dấu chân nhỏ, tạo nhanh Đầu ra SVG và XAML tích hợp sẵn (hữu ích cho các tình huống WPF, WinUI và web) Triển khai chính xác tất cả 40 phiên bản QR và tất cả 4 cấp độ sửa lỗi Các dự án ví dụ phong phú (WinForms, WPF, ASP.NET Core, SkiaSharp, ImageSharp) Hạn chế: , không có khả năng đọc mã QR Chỉ tạo mã Không có tính năng nhúng logo hoặc tạo kiểu nâng cao Tùy chỉnh hạn chế so với các trình tạo tải trọng của QRCoder Ít nội dung cộng đồng và hướng dẫn hơn so với QRCoder hoặc ZXing.Net Các nhà phát triển cần một trình tạo mã QR nhỏ, chính xác, đa nền tảng với đầu ra SVG và không có gánh nặng System.Drawing. Nếu đích triển khai của bạn là Linux hoặc Docker và bạn chỉ cần tạo mã, thư viện này xứng đáng được xem xét nghiêm túc. Tốt nhất cho: 5. SkiaSharp.QrCode — Tạo mã đa nền tảng hiệu suất cao SkiaSharp.QrCode của là một thư viện tạo mã QR tập trung vào hiệu suất, được xây dựng trên SkiaSharp. Nó được tạo ra đặc biệt để tránh các giới hạn GDI+ của System.Drawing trong khi mang lại hiệu suất cấp độ gốc thông qua tăng tốc phần cứng của SkiaSharp. guitarrapc using SkiaSharp.QrCode.Image; // Một dòng: tạo và lưu QRCodeImageBuilder.SavePng("https://example.com", "qrcode.png"); // Hoặc với cài đặt tùy chỉnh var pngBytes = new QRCodeImageBuilder("https://example.com") .WithSize(512, 512) .WithErrorCorrection(ECCLevel.H) .ToByteArray(); Đầu ra một dòng của SkiaSharp.QrCode Kết quả kiểm tra từ kho lưu trữ của dự án cho thấy SkiaSharp.QrCode vượt trội hơn QRCoder và các thư viện mã QR .NET khác về tốc độ và phân bổ bộ nhớ cho các tác vụ tạo mã. Nó đạt được kết xuất không sao chép trực tiếp vào canvas SkiaSharp, tránh cấp phát bộ đệm trung gian. Ưu điểm: Giấy phép MIT, miễn phí cho mục đích thương mại Hiệu suất tạo mã hàng đầu (đã kiểm tra) Phân bổ bộ nhớ tối thiểu, áp lực GC thấp cho các tình huống thông lượng cao Sẵn sàng cho NativeAOT (hỗ trợ biên dịch .NET Native AOT) Các hình dạng module tùy chỉnh (hình tròn, hình chữ nhật bo tròn) cho mã QR được tạo kiểu Hoạt động trên Windows, Linux, macOS, iOS, Android, WebAssembly Hạn chế: , không đọc mã QR Chỉ tạo mã Yêu cầu các phụ thuộc gốc SkiaSharp (các gói NuGet dành riêng cho nền tảng) Cộng đồng nhỏ hơn QRCoder hoặc ZXing.Net Không có trình tạo tải trọng (Wi-Fi, vCard), bạn tự định dạng các chuỗi đó Chỉ hỗ trợ UTF-8, không có mã hóa ISO-8859-2 hoặc Shift JIS Các ứng dụng máy chủ thông lượng cao tạo mã QR ở quy mô lớn (ví dụ: hệ thống vé, tạo nhãn hàng loạt) nơi hiệu suất và hiệu quả bộ nhớ quan trọng nhất. Cũng lý tưởng nếu bạn đã sử dụng SkiaSharp trong dự án của mình. Tốt nhất cho: 6. Aspose.BarCode — Bộ sản phẩm mã vạch cấp doanh nghiệp để tạo mã QR là một thư viện thương mại toàn diện hỗ trợ hơn 80 ký hiệu mã vạch bao gồm QR Code, Micro QR, Data Matrix, PDF417 và tất cả các định dạng Aspose.BarCode for .NET