QRCoder 是 C# 中最轻量、活跃且稳定的二维码生成库,三行代码即可生成 PNG/SVG,不依赖 System.Drawing,支持 UTF-8 和多级容错,但原生不支持着色或加 logo。
用 QRCoder 库最直接,NuGet 安装后三行代码就能出图
不用自己实现 Reed-Solomon 编码或掩码逻辑,QRCoder 是目前 C# 生态中最轻量、维护活跃、且输出稳定的开源库。它不依赖 System.Drawing(避免 Linux 上的 GDI+ 问题),默认输出 Bitmap 或可选 SVG/PNG 字节数组。
安装命令:
dotnet add package QRCoder
基础用法示例:
var qrGenerator = new QRCodeGenerator();
var qrData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.Q);
var qrCode = new PngByteQRCode(qrData);
byte[] pngBytes = qrCode.GetGraphic(20); // 每模块20像素,输出PNG字节数组
-
GetGraphic(20)的参数是「每个二维码模块(module)对应的像素数」,不是总宽高;设太小会糊,设太大可能溢出内存(尤其含中文时) - 中文内容需确保编码为 UTF-8 ——
CreateQrCode默认处理,但若传入 byte[] 要自己保证 - 若目标是 Web API 返回图片,直接用
File(pngBytes, "image/png")即可,无需额外保存文件
想自定义颜色、加 logo 或调整容错等级?用 QRCodeGenerator.Options
默认白底黑码太单调,但 QRCoder 原生不支持着色或嵌入 logo;得靠后续图像处理。不过容错等级、编码模式、最小版本等关键参数必须在生成前指定。
例如提高容错并强制 UTF-8 编码: