免费二维码生成指南:4 个场景、1 张决策表,3 分钟选对开源方案
2026/9/22 6:06:23 网站建设 项目流程

免费二维码生成指南: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(最终像素宽)、marginerrorCorrectionLevel;同步场景直接调create的 sync 变体
  • 限制:没有内置 Logo 嵌入能力,需要品牌定制得自己用画布二次合成

想先跑通再决定:直接调免费二维码 API

  • 推荐:免费二维码图像 API(qrserver.com)
  • 为什么:一个 GET 请求返回 PNG 图片,免注册、无需本地环境,是验证「二维码到底放在页面哪个位置」的最短路径
  • 关键参数size(像素尺寸)、data(内容,必须做 URL 编码)
  • 限制:免费接口不承诺可用性,没有 SLA;内容会出现在 URL 里,不适合放敏感数据 ⚠️

批量生成二维码并导出:最小成本做法

  • 推荐:Pythonqrcode库 + 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 个坑

  1. 别去掉白边求「满版」好看。规范里的静区(quiet zone)至少 4 个模块,border=0的二维码在暗色屏幕、低对比度背景下识别率明显下降,甚至扫不出来。
  2. 嵌 Logo 时别顺手开 H 级纠错。H 级冗余 30%,同样内容下矩阵比 M 级高 1~2 个版本、格子更密;Logo 建议只占总面积 15%~20%,且上线前用手机真机回归扫一遍,小尺寸(印刷小于 25mm)尤其容易翻车。
  3. 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询