郑重声明:我们是 Iron Software 的开发关系团队,Iron Software 是本次对比中的库 IronQR 的开发公司。尽管如此,我们相信诚实的评估比市场宣传更能服务于大家。我们将展示我们的方法论,承认我们的偏见,并让代码来说话。 我们对每个 C# 二维码库都采用了相同的评估标准:简单的二维码生成、从图像读取二维码、自定义深度、跨平台支持和许可成本。以下是 .NET 生态系统中 11 个值得关注的二维码库的比较结果,旨在帮助您一次性选择适合您项目的库。 以下是我们在 Visual Studio 中使用 生成二维码的三行代码示例,这是我们将要介绍的库之一: IronQR using IronQr; using IronSoftware.Drawing; QrCode qr = QrWriter.Write("https://example.com"); AnyBitmap bitmap = qr.Save(); bitmap.SaveAs("myqr.png"); IronQR 二维码示例输出 这种简单性是基本要求。真正的问题在于,当您需要从仓库扫描仪 损坏的二维码、嵌入品牌徽标、目标为 Linux 容器或处理数千个二维码的批量作业时,会发生什么。这正是库之间产生分歧的地方,也是本次比较的价值所在。 读取 速览:主比较表 在我们深入探讨之前,先来看全貌。此表捕捉了在为 .NET 项目选择二维码库时最重要的维度。 库 生成 读取 徽标/样式 微二维码 跨平台 许可 NuGet 下载量 IronQR ✅ ✅ ML驱动 ✅ 完全 ✅ + RMQR ✅ Win/Mac/Linux/Mobile 商业版(749 美元起) 约 56K QRCoder ✅ ❌ ✅ 中等 ✅ ⚠️ 部分(System.Drawing) MIT(免费) 约 6800 万 ZXing.Net ✅ ✅ ❌ 极少 ❌ ⚠️ 通过绑定 Apache 2.0(免费) 约 3200 万 Net.Codecrete.QrCodeGenerator ✅ ❌ ❌ ❌ ✅ MIT(免费) 约 410 万 SkiaSharp.QrCode ✅ ❌ ✅ 自定义形状 ❌ ✅ MIT(免费) 约 120 万 Aspose.BarCode ✅ ✅ ✅ ✅ ✅ 商业版(999 美元起) 约 540 万 Syncfusion Barcode ✅ ❌ ✅ 中等 ❌ ✅ (UI控件) 商业版(社区版免费) 约 200 万+ Spire.Barcode ✅ ✅ ✅ 徽标嵌入 ❌ ⚠️ (System.Drawing) 商业版(599 美元起) 约 45 万 IronBarcode ✅ ✅ ✅ ✅ 微二维码 ✅ Win/Mac/Linux 商业版(749 美元起) 约 120 万 Dynamsoft Barcode Reader ❌ ✅ 高性能 不适用 ✅ ✅ 商业版(1,249 美元/年以上) 约 25 万 BarcodeLib ✅ ❌ ❌ ❌ ⚠️ (System.Drawing) Apache 2.0(免费) 约 450 万 表 1:11 个 .NET 二维码库在关键选择标准上的主比较。下载次数截至 2026 年初,为近似值。 本文其余部分将详细介绍每一行,包括代码、权衡和诚实的评估。 我们是如何评估这些库的? 我们根据七个标准对每个库进行了评估,这些标准根据它们在实际选择决策中的驱动频率进行了加权: — 它能否从字符串、URL 和结构化数据(vCards、Wi-Fi 凭据)创建二维码? 二维码生成 — 它能否从图像、扫描件或 PDF 中解码二维码?它如何处理损坏或旋转的代码? 二维码读取 — 徽标嵌入、颜色控制、模块形状样式、纠错配置 自定义 — 标准二维码、微二维码、RMQR(矩形微二维码) 二维码格式支持 — 它是否能在 Windows、Linux、macOS 和 Docker 容器内干净地运行,而无需 System.Drawing 技巧? 跨平台 — 开源 vs. 商业版,每开发者定价,套件折扣 许可与成本 — API 参考质量、教程可用性、社区规模、活跃维护 文档与生态系统 所有代码示例都以 为目标,并使用顶级语句。当 .NET 10 引入相关改进时,我们会进行说明。 .NET 8 (LTS) 您应该选择哪个二维码库?决策框架 如果您已经知道自己的限制,可以跳过下面的 11 个库简介。这是快速通道: → 或 。两者都采用 MIT 许可。QRCoder 拥有更多的渲染器和有效负载生成器;Net.Codecrete 更轻量级,并完全避免了 System.Drawing。 “我需要免费生成二维码,并且没有任何依赖项。” QRCoder Net.Codecrete.QrCodeGenerator → (ML 驱动的读取,损坏代码的最佳准确性)、 (免费,经过实战检验,支持的格式最广泛)或 (企业级套件,昂贵)。 “我需要同时生成和读取二维码。” IronQR ZXing.Net Aspose.BarCode → 、 或 。这三者都避免了破坏跨平台部署的 System.Drawing 依赖项。 “我正在部署到 Linux/Docker,无法使用 System.Drawing。” IronQR SkiaSharp.QrCode Net.Codecrete.QrCodeGenerator → 在原始生成基准测试中处于领先地位。对于读取性能, 是为高吞吐量扫描而设计的。 “性能和内存占用是关键。” SkiaSharp.QrCode Dynamsoft Barcode Reader → 使用您已有的。从许可证或维护角度来看,在套件已包含二维码库的情况下添加另一个供应商的二维码库很少有意义。 “我已经在使用的 Aspose/Syncfusion/Iron Software 套件中。” → 提供了明确的 MAUI 和 Blazor 集成指南。Microsoft MVP Jeff Fritz ,这是这种确切模式的实际示例。 “我正在构建一个带有二维码扫描功能的 Blazor/MAUI 移动应用程序。” IronQR 使用 IronQR 和 Blazor 构建了一个基于二维码的数字名片应用程序 11 个 .NET 二维码库对比 1. IronQR — ML 驱动的二维码读取和生成,支持跨平台 IronQR 是 Iron Software 专门的二维码库,独立于其更广泛的 IronBarcode 产品。其突出特点是利用机器学习模型(基于 )来检测和读取不完美图像中的二维码,即使代码有旋转、部分遮挡或以奇怪的角度拍摄,通常只需几行代码即可完成。 ONNX 它还可以轻松创建二维码对象,支持使用图像样式化二维码、添加自定义颜色并将二维码图像保存为不同的输出格式。 生成: using IronQr; using IronSoftware.Drawing; // 生成带徽标的样式化二维码 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"); IronQR 生成的二维码输出 读取: 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}"); IronQR 读取输出 ML 模型是 IronQR 与此列表中其他所有库的区别所在。在我们的测试中,它成功解码了会议徽章照片和角度拍摄的智能手机截图中的二维码,而 ZXing.Net 和基本图像处理读取器则一无所获。权衡在于包的大小,ONNX 模型增加了体积。如果您不需要读取功能,IronQR.Slim 版本不包含 ML 模型,体积明显更小。 优点: ML 驱动的读取功能可处理损坏、旋转和部分遮挡的二维码,并优先考虑准确性 支持二维码、微二维码和 RMQR(矩形微二维码)格式 完整的样式 API:颜色、徽标、圆角模块、边距 跨平台:Windows、macOS、Linux、iOS、Android、Docker、Azure、AWS 异步读取支持(ReadAsync),适用于服务器工作负载 可保存为多种格式,如 PNG 图像、JPG、多页 TIFF 等 用户友好的 API,易于使用 局限性: 需要商业许可证(部署费每位开发者 749 美元起) 由于 ML 模型,完整包比开源替代品体积更大 低于成熟的开源选项,较新产品(约 2023 年发布) NuGet 下载量 仅用于生成的项目可能不需要 ML 开销 需要同时进行生成和读取的项目,尤其是在扫描条件不理想的情况下(移动应用程序、仓库扫描、会议/活动场景)。 展示了 IronQR 如何处理 Blazor 和自定义品牌化的实时二维码生成。 最适合: Jeff Fritz 二维码名片案例研究 2. — 最受欢迎的开源二维码生成器 QRCoder QRCoder 库是 NuGet 上下载量最多的二维码包, 。最初由 Raffael Herrmann 于 2013 年创建,现由 ,它是一个纯 C# 实现,专门专注于二维码 (不读取)。 下载量超过 6800 万次 Shane32 维护 生成 using QRCoder; // 生成二维码并保存为 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); QRCoder 输出图像 QRCoder 提供了多种渲染器:PngByteQRCode(跨平台,无 System.Drawing 依赖)、QRCode(基于 System.Drawing,仅限 Windows)、SvgQRCode、AsciiQRCode 等。它还包含结构化数据的有效负载生成器,如 Wi-Fi 凭据、vCards 和书签,这可以省去您手动格式化这些字符串。 优点: MIT 许可,完全免费用于商业用途 6800 万+ 次 NuGet 下载,社区采用广泛,稳定性得到验证 多种渲染器选项,包括避免 System.Drawing 的 PngByteQRCode 内置的有效负载生成器(Wi-Fi、vCard、地理位置、日历事件) 微二维码支持 对 .NET Standard 目标没有依赖项 局限性: ,无法读取或解码二维码图像文件 仅生成 某些渲染器(如 QRCode)依赖 System.Drawing.Common,自 .NET 6 起仅限 Windows 没有内置的徽标嵌入功能(您需要自己组合图像) 没有高级样式(模块形状、渐变) 仅需要二维码生成且预算为零的项目。如果您需要生成 Wi-Fi 二维码或 vCards,但完全不需要读取代码,那么 QRCoder 是大多数 .NET 开发者的实用默认选择。 最适合: 3. — 条形码库的瑞士军刀 ZXing.Net (“斑马交叉”)是原始 Java ZXing 库的 。它是一个通用条形码库,支持超过 15 种格式,包括二维码、Data Matrix、Aztec、PDF 417、UPC、EAN、Code 128 等。二维码支持是其更广泛功能的一个子集。 ZXing.Net .NET 端口 using ZXing; using ZXing.Common; using ZXing.QrCode; // 生成二维码 var writer = new BarcodeWriterPixelData { Format = BarcodeFormat.QR_CODE, Options = new QrCodeEncodingOptions { Height = 250, Width = 250, Margin = 1 } }; var pixelData = writer.Write("https://example.com"); // 读取二维码需要绑定包(例如 ZXing.Net.Bindings.SkiaSharp) ZXing.Net 输出 ZXing.Net 需要特定平台的绑定包来进行渲染和读取。核心包提供编码/解码逻辑;您根据目标平台添加 ZXing.Net.Bindings.Windows.Compatibility、ZXing.Net.Bindings.SkiaSharp 或 ZXing.Net.Bindings.ImageSharp。这种模块化方法很灵活,但增加了集成复杂性。 优点: Apache 2.0 许可,免费用于商业用途 同一个库中同时支持生成和读取 支持二维码以外的 15 种以上条形码格式 ,经过实战检验,社区知识丰富 3200 万+ 次 NuGet 下载 提供 SkiaSharp、ImageSharp、OpenCV 等的绑定 局限性: 二维码特定功能基本,不支持徽标嵌入,不支持高级样式 与 ML 驱动的解决方案相比,损坏/旋转二维码的读取准确性一般 绑定包增加了依赖项管理的复杂性 API 设计显得陈旧,不如现代 .NET 库流畅 活跃维护速度已放缓(社区维护) 需要同时支持二维码和传统条形码(零售、物流)的项目,并希望获得免费、可靠的选项。如果您的首要任务是二维码特定功能(如样式或 ML 驱动的读取),而不是广泛的条形码格式支持,那么专门的二维码库会更适合您。 最适合: 4. Net.Codecrete.QrCodeGenerator — 轻量级且符合标准的 Net.Codecrete.QrCodeGenerator 是 Manuel Bleichenbacher 的一个干净、最小化的二维码生成库。它是 Project Nayuki 的 Java 二维码生成器的 ,专注于正确性和标准合规性( )。 .NET 翻译 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); Net.Codecrete.QrCodeGenerator 示例输出 拥有 ,对于一个专注的库来说,它得到了广泛的应用。其突出的优点是完全没有 System.Drawing 依赖项 — 它原生生成 SVG、XAML 路径数据、PNG 和 BMP。这使其成为跨平台 .NET 项目和在 Docker 中运行的 ASP.NET Core 服务的绝佳选择。 约 410 万次 NuGet 下载 优点: MIT 许可,完全免费 无 System.Drawing 依赖项,真正的跨平台 占用空间小,生成速度快 内置 SVG 和 XAML 输出(适用于 WPF、WinUI 和 Web 场景) 正确实现了所有 40 个二维码版本和所有 4 个纠错级别 丰富的示例项目(WinForms、WPF、ASP.NET Core、SkiaSharp、ImageSharp) 局限性: ,无二维码读取功能 仅生成 无徽标嵌入或高级样式功能 与 QRCoder 的有效负载生成器相比,自定义功能有限 与 QRCoder 或 ZXing.Net 相比,社区内容和教程较少 需要小型、正确、跨平台且具有 SVG 输出且没有 System.Drawing 负担的二维码生成器的开发人员。如果您的部署目标是 Linux 或 Docker,并且只需要生成功能,那么这个库值得认真考虑。 最适合: 5. SkiaSharp.QrCode — 高性能跨平台生成 SkiaSharp.QrCode by 是一个以性能为重点的二维码生成库,构建在 SkiaSharp 之上。它专门创建,以避免 System.Drawing 的 GDI+ 限制,同时通过 SkiaSharp 的硬件加速提供原生级性能。 guitarrapc using SkiaSharp.QrCode.Image; // 单行命令:生成并保存 QRCodeImageBuilder.SavePng("https://example.com", "qrcode.png"); // 或使用自定义设置 var pngBytes = new QRCodeImageBuilder("https://example.com") .WithSize(512, 512) .WithErrorCorrection(ECCLevel.H) .ToByteArray(); SkiaSharp.QrCode 单行命令输出 来自该项目存储库的基准测试结果显示,在生成任务的速度和内存分配方面,SkiaSharp.QrCode 的性能优于 QRCoder 和其他 .NET 二维码库。它实现了直接到 SkiaSharp 画布的零拷贝渲染,避免了中间缓冲区分配。 优点: MIT 许可,免费用于商业用途 一流的生成性能(经过基准测试) 最小的内存分配,高吞吐量场景下的 GC 压力低 NativeAOT 就绪(支持 .NET Native AOT 编译) 自定义模块形状(圆形、圆角矩形),用于样式化二维码 支持 Windows、Linux、macOS、iOS、Android、WebAssembly 局限性: ,无二维码读取功能 仅生成 需要 SkiaSharp 原生依赖项(特定于平台的 NuGet 包) 社区比 QRCoder 或 ZXing.Net 小 无有效负载生成器(Wi-Fi、vCard),您需要自己格式化这些字符串 仅支持 UTF-8,不支持 ISO-8859-2 或 Shift JIS 编码 需要大规模生成二维码的高吞吐量服务器应用程序(例如,票务系统、批量标签生成),其中性能和内存效率最为重要。如果您已经在项目中使用 SkiaSharp,它也是理想选择。 最适合: 6. Aspose.BarCode — 用于生成二维码的企业级条形码套件 是一个全面的商业库,支持包括二维码、微二维码、Data Matrix、PDF417 和所有常见的 1D 格式在内的 80 多种条形码符号。它是 Aspose 生态系统中用于文档处理的企业级产品之一。 Aspose.BarCode for .NET using Aspose.BarCode.Generation; using Aspose.BarCode.BarCodeRecognition; // 生成 var generator = new BarcodeGenerator(EncodeTypes.QR, "https://example.com"); generator.Parameters.Barcode.XDimension.Pixels = 4; generator.Save("aspose-qr.png", BarCodeImageFormat.Png); // 读取 using var reader = new BarCodeReader("aspose-qr.png", DecodeType.QR); foreach (var result in reader.ReadBarCodes()) Console.WriteLine($"Type: {result.CodeTypeName}, Text: {result.CodeText}"); Aspose.BarCode 二维码输出 Aspose.BarCode 读取输出 Aspose.BarCode 提供 QualitySettings 预设,可在识别速度与对损坏代码的容忍度之间取得平衡,从 HighPerformance(快速,图像清晰)到 HighQuality(较慢,可处理噪声和失真)。 优点: 同时支持生成和读取,并具有高质量调整功能 支持 80 多种条形码格式,是列表中最广泛的 高级读取功能可处理嘈杂的扫描、低对比度、倾斜和损坏的代码 丰富的自定义功能:颜色、边框、条形高度、旋转、文本定位 跨平台:.NET Framework、.NET Core、.NET 5+、Xamarin 全面的文档和 API 参考 局限性: ,永久许可证起价为每位开发者 999 美元 昂贵 软件包体积大,反映了其广泛的格式支持 如果您只需要二维码,这可能有些过度,您为 80 多种不使用的格式付费 API 设计相比专用二维码库来说冗长 封闭生态系统,与其他 Aspose 产品集成效果最佳 已投资 Aspose 生态系统的企业,或需要支持二维码以外多种条形码格式的项目。对于仅限二维码的项目,性价比很难证明。 最适合: 7. Syncfusion Barcode — 带有二维码功能的 UI 控件 Syncfusion 的 Barcode 组件是其 ASP.NET Core、Blazor、WPF、WinForms 和 Xamarin 平台可用的 UI 控件。与独立库不同,它旨在直接在 Syncfusion 的 UI 框架内渲染条形码和二维码。 Syncfusion 提供了一个 ,对个人开发者和小型企业(收入低于 100 万美元,最多 5 名开发人员)免费。这使其在商业选项中独树一帜。 社区许可证 优点: 对符合条件的个人