二维码生成器使用指南:在线制作二维码的完整方法
二维码能不能用,几乎不取决于"生成"那一下,而取决于生成参数与投放环境是否对得上。同一条网址,容错等级从 L 换到 H,模块总数会从 1089 涨到 1681,边长没变,单模块却细了四分之一;同一条链接多带三个追踪参数,版本可能从 6 跳到 9。印出来扫不出来、贴在玻璃门上反光扫不出来、中间加了 logo 之后整批物料返工,这些故障几乎都能在生成阶段提前避开。
下面按工程视角讲清四件事:参数怎么按场景选、容错等级与版本之间到底在换什么、印出来扫不出来时按什么顺序排查,以及静态码与动态码在可改动性、成本与安全上的真实差别。文中所有模块数都按本站二维码生成器使用的同一套编码逻辑实测得到,可以自行复算。
一、场景决定参数:二维码没有一套通用配置
可调的东西只有三样:内容、尺寸、容错等级。但这三样在不同场景里的最优解差别很大,把"名片上的码"和"户外海报上的码"套用同一组参数,通常在其中一个场景里就是错的。
| 使用场景 | 典型内容 | 建议容错等级 | 真正的约束在哪 |
|---|---|---|---|
| 名片、展台物料 | 联系人信息 | H | 要留出中央 logo 的位置,字段越全码越密 |
| WiFi 分享 | 网络名称与密码 | M 或 Q | 多为一块屏幕显示、另一台手机拍摄,受亮度与摩尔纹影响 |
| 室内海报、货架标签 | 短链接 | Q | 观看距离在一米上下,模块不能细到印不出来 |
| 户外广告、灯箱 | 短链接 | Q 或 H | 观看距离远,尺寸要由距离反算,还必须抗污损 |
| 产品包装、曲面标签 | 短链接 | H | 曲面与折痕会造成几何变形,需要更多冗余 |
| 收款、活动核销 | 可变目标短链 | M 或 Q | 需要改目标或统计扫码量,静态码做不到 |
这张表的核心判断只有两条:码会被污损、遮挡或贴在非平面上,就把等级往上抬;码只出现在干净屏幕上,就没必要为冗余买单。收款与核销那一行是另一个维度的问题,第五节展开。
二、容错等级:30% 是纠错上限,不是可用额度
二维码用 Reed-Solomon 纠错码提供冗余,四个等级对应可恢复的码字比例:L 约 7%、M 约 15%、Q 约 25%、H 约 30%。这些比例容易被读成"遮掉三成照样能扫",但它们是纠错能力的理论边界,实际使用必须留余量:遮挡接近上限时,扫码角度一歪、光线一暗就会失败。
冗余不是白来的。同一段内容,等级越高,要塞进去的校验码字越多,于是被迫升到更大的"版本"。版本是二维码的尺寸档位:版本 1 是 21×21 个模块,此后每升一版,每边增加 4 个模块,最高到版本 40 的 177×177。
| 版本 | 模块数 | 什么情况下会落到这一档 |
|---|---|---|
| 版本 1 | 21×21(441 个模块) | 极短内容:几十个字符以内的短链或纯数字 |
| 版本 4 | 33×33(1089 个模块) | 一条五十多字符的网址,用 L 或 M 级 |
| 版本 6 | 41×41(1681 个模块) | 同一条网址抬到 H 级,或内容再长一截 |
| 版本 10 | 57×57(3249 个模块) | 带多个查询参数的长链接 |
| 版本 20 | 97×97(9409 个模块) | 成段文本、字段完整的联系人信息 |
| 版本 40 | 177×177(31329 个模块) | 规格允许的最大档位,日常场景几乎用不到 |
换算关系可以直接记:模块数 = 17 + 4 × 版本号。版本与单边模块数是线性关系,但模块总数按平方增长,所以版本每升一级,实际占用的面积增加得比直觉更快。
编码方式同样影响版本。同一段字符,按数字模式或字母数字模式编码比按字节编码省空间,中文按 UTF-8 逐字节编码则更费。这也是为什么"把网址缩到最短"往往比调参数更有效。
三、真实算例:一条 53 字符网址的四档实测
取本站一篇指南的地址 https://www.calc-tools.top/blog/zh/qr-generator-guide,共 53 个字符,分别用四个容错等级生成,实测结果如下。
| 容错等级 | 可恢复比例 | 实测版本 | 模块数 | 边长 3 厘米时的单模块宽度 |
|---|---|---|---|---|
| L | 约 7% | 版本 4 | 33×33(1089 个) | 约 0.91 毫米 |
| M | 约 15% | 版本 4 | 33×33(1089 个) | 约 0.91 毫米 |
| Q | 约 25% | 版本 5 | 37×37(1369 个) | 约 0.81 毫米 |
| H | 约 30% | 版本 6 | 41×41(1681 个) | 约 0.73 毫米 |
从 L 换到 H,模块总数从 1089 涨到 1681,多出 54%;而码的物理边长没变,意味着每个模块从 0.91 毫米缩到 0.73 毫米。印刷套准偏差、纸张吸墨扩散、手机对焦精度,全都要在这个尺度上兑现。"等级越高越保险"只对了一半:容错能力上去了,可读性反而下来了。
内容长度的影响比等级更猛。同一条链接后面加上三个追踪参数,字符数从 53 变成 87,H 级版本就从 6 跳到 9,也就是 53×53、2809 个模块,比原来多 67%。反过来做缩身:把 53 字符的完整地址换成 27 字符的短链,L 级版本从 4 落回 2,即 25×25、625 个模块,模块总数减少 43%。
把这两组数字放在一起,参数调整的优先级就清楚了:先削内容,再谈等级。削内容换来的是版本下降,版本下降同时改善可读性与容错余量;只调等级则是拿可读性换容错,一进一出。
尺寸怎么定?行业里常见的粗估经验是"可扫距离约为码边长的 10 倍",不同资料给出的比例在 5 倍到 10 倍之间,取小值更稳妥。按 10 倍估:希望站在 3 米外能扫到,边长至少 30 厘米,此时 41×41 的模块宽度约 7.3 毫米,余量充裕。反过来,把 H 级的码印成 1.5 厘米见方,单模块只剩约 0.37 毫米,能不能扫出来就要看印刷质量了。
海报里缩放二维码时,尽量用矢量格式或整数倍放大,避免重采样把模块边缘插值成灰边,具体做法可参考图片裁剪与缩放与在线图片缩放。链接里含中文或空格时,还要先做百分号编码,否则不同扫码器解出的地址可能不一致,可以用URL 编码工具核对一遍再生成。
四、印出来扫不出来:六个原因与排查顺序
码扫不出来时,第一反应往往是"是不是纠错等级不够",但实际案例里等级几乎从来不是主因。按下面的顺序查,命中率最高。
| 现象 | 真正的原因 | 怎么改 |
|---|---|---|
| 怎么对都对不上焦,扫半天没反应 | 对比度不足:浅灰码配浅色底,或者深底浅码 | 固定用深色模块配浅色底,反差越大越好,别用同色系的深浅搭配 |
| 离远一点就扫不到 | 尺寸过小,或模块过密 | 按可扫距离约为边长 10 倍的经验反算尺寸,必要时先削内容降版本 |
| 边缘区域永远读不出来,摆正了才行 | 静区被裁:排版时把码贴到了色块或图片边缘 | 四边各留至少 4 个模块宽度的空白,且这片空白不能用深色 |
| 一部分手机能扫,另一部分毫无反应 | 反色:浅色模块配深色背景 | 改回标准配色,反色在部分解码实现里直接不识别 |
| 贴到圆柱、包装袋、布料上就失效 | 几何变形:曲面、褶皱、拍摄角度过大 | 缩小单张码的面积并抬高容错等级,或改用平面贴纸 |
| 屏幕上的码,另一台手机拍不出来 | 亮度不足、表面反光、数码变焦造成摩尔纹 | 屏幕亮度调至最高,避开直射光,拍摄时不要用数码变焦 |
顺序上建议先看静区和对比度,这两项在排版阶段最容易被吃掉;再看尺寸是否匹配观看距离;最后才怀疑容错等级,因为提高等级会把码变密,可能让问题更糟。
五、静态码与动态码:什么时候必须花钱
生成器输出的码默认是静态码:内容直接编码进图形,图形本身就是数据的全部。它的性质很硬——内容改不了,要改只能重新制作、重新印刷;好处同样硬——不依赖任何服务器,图片在就永远有效。
动态码长得一样,扫出来却是一个短链,真正的目标地址存在服务方的服务器上。多出来的这一跳换来三件事:可改目标、可统计扫描量、可按时间或地域做分流。
| 对比维度 | 静态码 | 动态码 |
|---|---|---|
| 数据存在哪 | 图形本身 | 图形里只有短链,目标存在服务方 |
| 修改目标地址 | 只能重新制作并重新印刷 | 后台修改,已印出去的码不变 |
| 统计扫描次数 | 做不到 | 可以按天、按地区统计 |
| 失效风险 | 只要图形可读就一直有效 | 服务停止、账号欠费或域名到期即失效 |
| 成本结构 | 一次性的制作与印刷成本 | 通常按年订阅,长期投放要算总账 |
| 隐私 | 扫码方只与目标服务器通信 | 每次扫描都经过服务方,访问行为被记录 |
判断标准很直接:物料已经印出去、而目标地址还可能变,就用动态码;物料与目标同时定稿、或者有效期很长,就用静态码。名片、包装、书籍附录这类"印一次用很多年"的场景,静态码可以完全避开第三方服务能否存续的风险;活动页、菜单、推广位这类会反复改目标的场景,动态码省下的重印费通常远超订阅费。
六、线下安全:二维码的两个真实风险
二维码本身不携带"来源",扫码的人只看到跳转结果,这就留下两类攻击空间。
替换攻击。收款码、停车缴费单、门店海报上的码都是贴上去的。把商户的收款码覆盖成自己的,或者把缴费单上的码换成转账码,是成本极低、收益直接的做法。商户侧应把收款码放在视线范围内、定期检查是否被覆盖,并开启到账语音提醒;付款侧在付款前核对收款方名称,比事后追讨有效得多。
跳转欺骗。静态码可以编码任意网址,包括仿冒页面的地址。短链让这种欺骗更隐蔽——扫码后人眼只看到一个短域名,看不出最终落点。凡是要求登录、支付或填写证件信息的页面,值得多花两秒确认域名是否为官方站点。
公共场所的"WiFi 码"和"活动签到码"同样要留意:前者可能指向伪装热点,后者可能把页面引向索取授权的第三方。扫码后被要求授权登录、填写手机号或安装应用时,先判断这一步是否必要。
七、四个反直觉的误区
误区一:容错等级调到 H 最保险。等级越高,版本越高、模块越密,同样的印刷尺寸下每个模块更小。对打印精度一般、观看距离较远的物料,H 反而更容易扫不出来。正确做法是按场景选:干净屏幕上用 M 或 Q,可能被遮挡、污损、贴在曲面上才用 H。
误区二:先把码做成小图,再丢进海报里放大。二维码是二值图形,放大不会增加信息,只是把每个模块插值成大色块;质量差的重采样会把模块边缘糊成灰边,灰度一旦落在判定阈值附近,解码就开始出错。要放大就用矢量格式,或者按目标尺寸重新生成。
误区三:以为二维码会过期。静态码不会过期,它只是图形,图片还在就能扫。会过期的是动态码:码本身没变,但它指向的短链服务停止或欠费,跳转就断了。所谓"二维码有效期"的说法,几乎都是在说动态码的服务期限。
误区四:logo 想放多大放多大。中间的 logo 会直接遮挡模块,遮挡量必须留在容错上限之内,而且不能压住三个角上的定位图形。H 级的 30% 是纠错能力的边界,不是可以随便用的面积预算;带 logo 的码一定要用不同机型实测,而不是凭面积估算。
八、常见问题(FAQ)
- 二维码中间放 logo 会失效吗?能放多大?
- 不一定失效,但必须把遮挡量控制在容错能力之内,并避开三个角上的定位图形。经验做法是用 H 级生成,让 logo 面积明显小于 30% 的纠错上限,生成后在不同机型上逐一实测。遮挡一旦接近上限,扫码角度或光线稍差就会失败。
- 为什么印出来的码扫不出来?
- 最常见的原因不是纠错等级,而是静区被裁、对比度不足和尺寸过小。排版时码的四边要各留至少 4 个模块宽度的空白,且这片空白不能是深色;配色坚持深色模块配浅色底;尺寸按可扫距离约为边长 10 倍估算。这三项都排除后,再考虑内容过长导致模块过密。
- 二维码会过期吗?
- 静态码不会。内容直接编码在图形里,只要图片还能被正确识别就一直有效。会过期的是动态码:码指向一个短链,短链服务停止、账号欠费或域名到期,跳转就会中断。
- 同一条网址,为什么别人生成的码比我的稀疏?
- 差别通常来自三处:容错等级更高、内容更长、编码方式不同。多带几个查询参数就可能升一到三个版本。想变稀疏,最有效的手段是把链接缩到几十个字符以内,其次才是下调容错等级。
- 收款码会被调包吗?
- 会。静态收款码是一张贴纸或一块立牌,覆盖替换的成本极低。商户应把收款码放在视线范围内并定期检查,同时开启到账提醒;付款方在付款前核对收款方名称,比事后追讨有效得多。
九、四条可执行的建议
- 先定内容,再定等级。把链接压到最短,能砍的追踪参数就砍,再根据投放环境选等级。顺序反了,等于用可读性去补内容上的浪费。
- 印刷前出样实测。按最终尺寸打样,用不同品牌的手机、在不同光照下各扫几次,带 logo、贴曲面、户外投放的物料尤其要做这一步。它能挡掉绝大多数批量返工。
- 给码留出排版预算。四边各留至少 4 个模块宽度的静区,四周不压深色,不贴裁切线。设计稿里应把静区当成码的一部分,而不是可以占用的空白。
- 别二次加工位图码。需要缩放就用矢量格式,或者直接在二维码生成器里按目标尺寸重新生成;把位图码丢进设计稿反复缩放,重采样造成的灰边是隐性故障源。
二维码是把参数、印刷和投放环境绑在一起的小系统,任何一环省下的功夫,最后都会在"扫不出来"那一刻还回来。需要立刻出码时,可以直接用在线二维码生成器按上面的参数表生成,并按目标尺寸下载。