二维码这件事,值得做得干净利落
从一段文字到一个可扫的码,中间隔着字节编码、纠错码、掩码评分一整套算法。这个工具把整条链路做在浏览器里:内容按 UTF-8 编码,自动选最小可用版本,Reed-Solomon 纠错,8 种掩码自动择优,渲染成图。识别同样本地完成——能用浏览器原生能力就用原生,没有再退回 jsQR 库,图片数据不出你的电脑。
自研编码器
byte 模式,版本 1-10(21×21 到 57×57),最高 271 字节;中文、emoji、网址、文本全走 UTF-8。
四档纠错
L/M/Q/H 分别可恢复约 7%/15%/25%/30% 的遮挡;屏幕展示与印刷场景各取所需。
掩码择优
按 ISO 标准的四条惩罚规则对 8 种掩码评分,自动选最易扫的一幅。
本地识别
优先浏览器原生 BarcodeDetector;不支持时加载 jsQR;图片数据始终不离开浏览器。
典型场景
- 分享网址:把链接转成码,贴到 PPT、海报、微信推文里,手机一扫即达;
- 印刷物料:需要矢量图时下 SVG,任意放大不模糊,名片、横幅、展架都能用;
- 活动配置:Wi-Fi 密码、活动报名链接、设备标识,容错选 Q/H,遮一角照样扫;
- 内容溯源:收到一张二维码图片,拖进来本地识别,看清指向哪里再决定扫不扫。
常见问题
生成和识别会上传图片吗?
不会。二维码在浏览器本地编码渲染;识别用浏览器原生 BarcodeDetector 或从公共 CDN 加载的 jsQR 库,图片数据始终不离开你的电脑。
支持中文吗?
支持。内容按 UTF-8 字节编码(byte 模式),中文、emoji 均可;字节越多版本越高(最高 271 字节)。
纠错等级怎么选?
L/M/Q/H 四档,可恢复比例约 7%/15%/25%/30%。屏幕展示用 L 或 M 即可;需要印刷、户外、遮挡场景选 Q 或 H。
为什么内容变长二维码更密?
二维码按内容自动选最小可用版本(1-10,模块数 21×21 到 57×57),内容越多版本越高、模块越密,扫描难度相应增加。
SVG 和 PNG 有什么区别?
PNG 适合直接发微信、插文档;SVG 是矢量图,任意放大不模糊,适合印刷、海报、横幅。