Tuyên bố đầy đủ: Chúng tôi là nhóm quan hệ nhà phát triển tại Iron Software, công ty đứng sau IronQR, một trong những thư viện trong bài so sánh này. Tuy nhiên, chúng tôi tin rằng các đánh giá trung thực 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 thiên vị của chúng tôi và để mã nguồn tự lên tiếng. Chúng tôi đã chạy từng thư viện mã QR C# theo các tiêu chí đánh giá giống hệt nhau: tạo mã QR đơn giản, đọc mã QR từ hình ảnh, độ 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 so sánh về 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à những gì ba dòng tạo mã QR trông giống như với trong Visual Studio, một trong những thư viện 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"); Kết quả mã QR ví dụ IronQR Sự đơn giản đó là điều hiển nhiên. Câu hỏi thực sự là điều gì sẽ xảy ra khi bạn cần một mã QR bị hỏng từ máy quét nhà kho, nhúng một logo thương hiệu, nhắm mục tiêu 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ài 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 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 Lượt tải NuGet IronQR ✅ ✅ Được hỗ trợ bởi ML ✅ Hoàn chỉnh ✅ + RMQR ✅ Win/Mac/Linux/Mobile Thương mại ($749+) ~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 kết nối 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+) ~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+) ~450K IronBarcode ✅ ✅ ✅ ✅ Micro QR ✅ Win/Mac/Linux Thương mại ($749+) ~1.2M Dynamsoft Barcode Reader ❌ ✅ Hiệu suất cao Không áp dụng ✅ ✅ 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 theo 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ẽ đi sâu vào từng dòng, với mã nguồn, đánh đổi và các đánh giá trung thực. Chúng ta đã đánh giá các thư viện này như thế nào? Chúng tôi đã đánh giá từng thư viện theo bảy tiêu chí, được cân nhắc dựa trên tần suất chúng thúc đẩy 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 (vCards, thông tin đăng nhập 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 bị xoay như thế nào? Đọc mã QR — Nhúng logo, kiểm soát màu sắc, kiểu dáng mô-đun, 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 sạch trên Windows, Linux, macOS và bên trong các container Docker mà không cần các bản hack System.Drawing không? Đa nền tảng — Mã nguồn mở so với thương mại, giá mỗi nhà phát triển, chiết khấu theo bộ Giấy phép & Chi phí — Chất lượng tham chiếu API, tính khả dụng 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 nhất. Khi .NET 10 giới thiệu các cải tiến liên quan, chúng tôi sẽ ghi chú lại. .NET 8 (LTS) Bạn nên chọn thư viện QR nào? Một khung quyết định Bỏ qua 11 hồ sơ 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ó giấy phép MIT. QRCoder có nhiều trình hiển thị 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ó bất kỳ phụ thuộc nào." QRCoder Net.Codecrete.QrCodeGenerator → (đọc hỗ trợ 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 hỏng cá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 điểm chuẩn tạo mã thô. Đố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 → Hãy sử dụng những gì bạn có. Việc thêm thư viện mã QR của nhà cung cấp khác khi bộ sản phẩm của bạn đã bao gồm một thư viện hiếm khi có ý nghĩa 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. MVP của Microsoft Jeff Fritz bằng IronQR với Blazor, một ví dụ thực tế về mẫu này. "Tôi đang xây dựng một ứng dụng di động Blazor/MAUI với khả năng 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 11 thư viện mã QR .NET được so sánh 1. IronQR — Đọc và tạo mã QR hỗ trợ 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ô hình học máy (dựa trên ) có thể 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 kỳ lạ, thường chỉ với vài dòng mã. ONNX Nó cũng có khả năng tạo các đố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 mã QR của bạn vào 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"); Kết quả 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}"); Kết quả đọc IronQR Mô hình ML là yếu tố khác 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 trên điện thoại thông minh mà ZXing.Net và các trình đọc hình ảnh cơ bản trả về kết quả rỗng. Đá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 đọc, IronQR.Slim được vận chuyển mà không có mô hình ML và nhẹ hơn đáng kể. Ưu điểm: Đọc hỗ trợ ML xử lý mã QR bị hỏng, bị xoay và bị 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 đầy đủ: màu sắc, logo, mô-đun bo tròn, lề Đa nền tảng: Windows, macOS, Linux, iOS, Android, Docker, Azure, AWS Hỗ trợ đọc không đồng bộ (ReadAsync) cho khối lượng công việc máy chủ Lưu vào 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ễ sử dụng Hạn chế: Yêu cầu giấy phép thương mại (từ $749 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 NuGet Các dự án chỉ tạo mã có thể không cần đến trọng lượng 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ý 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: Trường hợp sử dụng danh thiếp 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 được , đây là một triển khai C# thuần túy tập trung hoàn toàn vào mã QR (không đọc). hơn 68 triệu lượt tải xuống 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); Hình ảnh đầu ra QRCoder QRCoder cung cấp nhiều trình hiển thị: PngByteQRCode (đa nền tảng, không phụ thuộc System.Drawing), QRCode (dựa trên System.Drawing, chỉ dành cho Windows), SvgQRCode, AsciiQRCode, v.v. 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 đăng nhập Wi-Fi, vCard và dấu trang, giúp bạn không phải định dạng các chuỗi này 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 NuGet, sự chấp nhận rộng rãi của cộng đồng và sự ổn định đã được chứng minh Nhiều tùy chọn trình hiển thị bao gồm PngByteQRCode tránh System.Drawing Trình tạo tải trọng tích hợp (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ột số trình hiển thị (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 (bạn sẽ tự tổng hợp hình ảnh) Không có kiểu dáng nâng cao (hình dạng mô-đun, 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 thực tế mặc định 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 thư viện mã vạch ZXing.Net ("Zebra Crossing") là của thư viện ZXing Java gốc. Đây là một thư viện mã vạch đa dụng hỗ trợ hơn 15 định dạng, bao gồm QR Code, Data Matrix, Aztec, PDF 417, UPC, EAN, Code 128, v.v. Hỗ trợ QR là một tập hợp con các khả năng rộng hơn của nó. ZXing.Net bản port .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 kết nối (ví dụ: ZXing.Net.Bindings.SkiaSharp) Đầu ra ZXing.Net ZXing.Net yêu cầu các gói kết nối dành riêng cho nền tảng để hiển thị 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 mô-đun này rất linh hoạt nhưng làm tăng độ phức tạp 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 duy nhất 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 NuGet Có sẵn các gói kết nối cho SkiaSharp, ImageSharp, OpenCV, v.v. 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ó kiểu dáng nâng cao Độ chính xác khi đọc trên mã QR bị hỏng/bị xoay là trung bình so với các giải pháp hỗ trợ ML Các gói kết nối làm tăng độ phức tạp quản lý phụ thuộc Thiết kế API cho thấy sự lỗi thời, kém mạch lạc 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 hỗ trợ ML thay vì phạm vi 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à , tập trung vào tính chính xác và tuân thủ tiêu chuẩn ( ). bản dịch .NET của trình tạo mã QR 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 áp dụng rộng rãi cho một thư viện chuyên dụng. Chất lượng nổi bật của nó là không có phụ thuộc nào vào System.Drawing — nó tạo ra SVG, dữ liệu đường dẫn XAML, PNG và BMP một cách tự nhiên. Đ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à dịch vụ ASP.NET Core chạy trong Docker. ~4.1 triệu lượt tải 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 mã 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 Không có tính năng nhúng logo hoặc kiểu dáng 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 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 mục tiêu 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 đồng thời 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 SkiaSharp.QrCode Kết quả điểm chuẩn 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 khả năng hiển thị không cần sao chép trực tiếp vào canvas SkiaSharp, tránh phân bổ 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ã tốt nhất trong lớp (đã kiểm tra điểm chuẩn) 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) Hình dạng mô-đun 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 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 đặt vé, tạo nhãn hàng loạt) nơi hiệu suất và hiệu quả bộ nhớ là 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 1D phổ biến. Nó là một phần của hệ sinh thái Aspose rộng lớn hơn được các doanh nghiệp sử dụng để xử lý tài liệu. Aspose.BarCode cho .NET