免费二维码生成指南:4 个场景、1 张决策表,3 分钟选对开源方案
【免费下载链接】free-for-devA list of SaaS, PaaS and IaaS offerings that have free tiers of interest to devops and infradev项目地址: https://gitcode.com/GitHub_Trending/fr/free-for-dev
免费二维码生成不用花一分钱:开源本地库可以离线生成,免费 API 一行代码就能出图。下面按 4 个真实集成场景(纯前端 / 后端 / 批量导出 / 敏感数据)给出结论,最后附决策表和可运行代码。
选型标准与 free-for-dev 免费服务清单一致:只算「长期真正免费」的方案,限时试用、仅限前 N 次请求的接口一律不计入。
先判断你属于哪种场景
纯前端用:零依赖的本地生成二维码
- 推荐:qrcode.js(纯 JS 实现,无依赖,无需构建工具)
- 为什么:直接在浏览器里把内容编码成 canvas 或 Data URL,粘进
<img src>即可,前后端都不需要装东西 - 关键参数:渲染尺寸
width、纠错级别(URL 场景 M 即可)、margin留白 - 限制:内容长时矩阵版本自动升高、格子变密,小屏手机上扫码距离要更远
后端或 Node 全栈:用 qrcode 库本地生成
- 推荐:qrcode(Node.js 库,纯 JS 无原生依赖)
- 为什么:安装即用,PNG、SVG、终端字符三种输出都有,接口和 qrcode.js 基本一致,前后端可以共用一套写法
- 关键参数:
width(最终像素宽)、margin、errorCorrectionLevel;同步场景直接调create的 sync 变体 - 限制:没有内置 Logo 嵌入能力,需要品牌定制得自己用画布二次合成
想先跑通再决定:直接调免费二维码 API
- 推荐:免费二维码图像 API(qrserver.com)
- 为什么:一个 GET 请求返回 PNG 图片,免注册、无需本地环境,是验证「二维码到底放在页面哪个位置」的最短路径
- 关键参数:
size(像素尺寸)、data(内容,必须做 URL 编码) - 限制:免费接口不承诺可用性,没有 SLA;内容会出现在 URL 里,不适合放敏感数据 ⚠️
批量生成二维码并导出:最小成本做法
- 推荐:Python
qrcode库 + PIL 遍历数据文件 - 为什么:纯 CPU 操作,几千张几秒跑完,通常不需要并行;逐行读 CSV、按行内 ID 命名文件,导出即完成
- 关键参数:
fit=True让版本自适应内容长度;建议直接输出SVG 矢量,印刷放大不糊 - 限制:输出 PNG 时控制
box_size,单张边长别超 2000px,否则文件体积膨胀明显
数据敏感:确认二维码生成全程离线
- 结论:上面提到的本地库(qrcode.js / qrcode / Python qrcode)默认就是离线的
- 为什么:编码在你自己的机器上完成,只要内容不发送到任何第三方 HTTP 端点,数据就不出本机
- 怎么验证:检查依赖里没有任何网络请求;更彻底的做法是把生成脚本拿到断网环境跑一遍
- 加分项:用 zxing(多语言)做本地解码自测,生成 + 校验都离线,形成闭环 🔒
快速选型清单
| 你的情况 | 推荐方案 | 关键参数 / 限制 |
|---|---|---|
| 只在前端用,不想动服务端 | qrcode.js(零依赖纯 JS) | 输出 canvas / Data URL,纠错 M 够用 |
| Node 后端或全栈 | qrcode 库 | PNG / SVG / 终端输出;无内置 Logo 功能 |
| 先跑通再评估,不想装东西 | 免费二维码图像 API(qrserver.com) | 内容在 URL 中会留日志,敏感数据别用 ⚠️ |
| 一次生成上千张 | Python qrcode 批量脚本 | 输出 SVG 矢量;按数据行 ID 命名 |
| 数据绝对不能出本机 | 任意本地库(上面均可) | 内容不发往第三方即天然离线 🔒 |
最小可运行示例:Python 本地生成
# 安装:pip install "qrcode[pil]" import qrcode qr = qrcode.QRCode( error_correction=qrcode.constants.ERROR_CORRECT_M, # M 级可容忍约 15% 损伤,URL 场景够用 box_size=10, # 每个模块的像素宽:版本 1 共 21 格,边长约 210px border=4, # 静区白边,规范要求至少 4 格,别设为 0 ) qr.add_data("https://example.com/item/1024") qr.make(fit=True) # 按内容长度自动选择矩阵版本 qr.make_image().save("item_1024.png") # 需要印刷用矢量图时换这一行: # qr.make_image(factory=qrcode.svg.SvgImageFactory).save("item_1024.svg")真实集成踩过的 3 个坑
- 别去掉白边求「满版」好看。规范里的静区(quiet zone)至少 4 个模块,
border=0的二维码在暗色屏幕、低对比度背景下识别率明显下降,甚至扫不出来。 - 嵌 Logo 时别顺手开 H 级纠错。H 级冗余 30%,同样内容下矩阵比 M 级高 1~2 个版本、格子更密;Logo 建议只占总面积 15%~20%,且上线前用手机真机回归扫一遍,小尺寸(印刷小于 25mm)尤其容易翻车。
- token、密码不要出现在公共 API 的 URL 参数里。GET 参数本身就是 URL 的一部分,会进服务器访问日志——哪怕二维码最终没人扫,内容也已经被记录下来了。这类场景一律走本地生成。
一句话收尾
免费二维码生成就一句话:低频验证用 API,高频、批量、敏感数据用本地开源库。现在就打开上面那张决策表,找到你所在的行,今天在项目里装上对应库,5 分钟出第一张码。
【免费下载链接】free-for-devA list of SaaS, PaaS and IaaS offerings that have free tiers of interest to devops and infradev项目地址: https://gitcode.com/GitHub_Trending/fr/free-for-dev
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考