先说结论
打开二维码与条形码生成,把链接粘进去,等级保持 M,留白保持 4,下载那个 SVG。印出来至少两厘米宽,用哑光材质,深色在浅色上。订一千份之前,先拿一部不是你自己的手机,扫一下印出来的那张。
绝大多数情况到这儿就完了。这一页剩下的部分是给例外准备的:要经得起反复摸的码、中间要放 logo 的码、要贴在很小的东西上的码,还有一个特别容易做错、又得等上一年才发现的决定。
二维码里到底装着什么
一串字符,就这么点东西。扫一个二维码,等于把一段文本递给手机。之后打开网页也好,连上网络也好,问你要不要存联系人也好,都是手机认出了这段文本的样子,然后主动提议照着办。
所以根本没有“Wi-Fi 二维码”这么一个码种。有的只是一个普通二维码,里面装着 WIFI:T:WPA;S:My Network;P:the password;;,而近十年出的手机都认得它。生成器把拼好的那串字符摆出来给你看,正是为了这个:码没干出你以为它会干的事时,值得看的只有那串字符。
这也意味着,二维码一旦印出来就改不了,不会往家里打电话,也不会过期。除非有人往里面塞了一个指向他们自己服务器的链接,而那正是本页最后一节要说的事。
第一件事:纠错等级
二维码在数据旁边还带着一组校验码字,算法让读取器能把没看清的部分重建出来。一个缺了角的码还能扫出来,靠的就是它。校验码字放多少,就是等级,一共四档:
- L — 全部码字的约 7%。
- M,大约 15%。
- Q,大约 25%。
- H,大约 30%。
DENSO 以全部码字为分母定义这些百分比,并非任意模块或图像面积。检测图形受损可能使扫描在纠错前就失败。更高纠错能力也需要更多空间:相同内容通常会生成更密集或更大的符号。
L 给屏幕用:幻灯片里、邮件里、网页上的码。没什么东西会去损坏它,而每多一个模块,隔远了就更难读。
M 是默认值,也是大多数印刷品的正确答案。会被人拿在手里翻两下的纸、传单、名片。
Q 和 H 留给会被折腾的码:每天要擦一遍的菜单、贴在车间机器上的标签、板条箱上的标贴、晒得到太阳的橱窗里的码。中间能放 logo,也得靠 H,下面还会讲。
第二件事:留白,它是码的一部分
二维码周围那圈白,不是内边距,也不是设计选择。读取器靠它判断这个图形到哪儿为止。规范要求四边各留四个模块的静区,而一个被裁到边的码,是印出来的码失灵最常见的单一原因。
这话值得说得直白些,因为裁掉它实在太顺手了。码看着周围白得太多,于是在版式里被裁了一刀,或者被扔到一块一直铺到方块边上的彩色底上,或者干脆放到一张照片上。这几种做法,每一种都把读取器本来要用的那条边界拿走了。
连着留白显得太大,那就把码做小。别动那圈留白。
第三件事:印多大
经得起现实检验的那条经验法则是一比十:码的宽度,大约要有扫描距离的十分之一。
- 名片或者菜单,30 厘米处扫:两厘米左右。
- 两米外扫的海报:二十厘米左右。
- 五米外扫的公交站牌、橱窗:五十厘米左右。
两厘米是底线,不是目标。小到 1.5 厘米以下,印得再好,普通手机也开始吃力,因为单个模块的尺寸已经逼近它摄像头里一个像素了。
文字少,模块就少;模块少,同样的印刷尺寸就能在更远处读出来。所以码该指向 example.com/x,而不是一个末尾挂着一百个字符跟踪参数的网址。
另外,印刷请用 SVG。二维码是由边缘构成的,而 PNG 只有固定数量的像素来拼这些边缘,放大之后每条边都发虚,而发虚恰恰是扫描器最头疼的。SVG 是以指令表达的方块,印在名片上和印在广告牌上一样锐利。
颜色、对比度,以及常见的两个错
读取器量的是深色模块和浅色模块之间的差别,所以对比度就是全部。有两件事经常出错:
深底上的浅色码。看着是挺抓眼,可相当多的读取器直接不认:它们找的是浅底深图,不会去试反相。有些会试。而你的客户手上是哪一种,你根本不知道。
差别不够大。白底中灰,或者两个分量相近的品牌色,在屏幕上量着没问题,一旦印上纸,油墨扩散加上手机的自动曝光,就失灵了。真要给码上色,就让深的那部分深得够真。
凡是会在灯下被扫的东西,哑光胜过亮面,而这两者又都胜过印在一张照片上。要把码放到彩色底上,透明背景很好用,但记得看清最后垫在它后面的到底是什么,深底上的透明码,无非是上面那第一个错多绕了几道。
中间放一个 logo
小标志有时可行,但无法保证任何图像面积比例都安全。DENSO 所说 H 级约 30% 的恢复率以全部码字为分母,并非任意方块。保留定位和校正图形,使用 H 级,并用多部手机测试最终印刷品。DENSO 的纠错说明解释了这个比例。
选择 H 级并让标志保持较小。没有保证安全的面积比例:位置、版本、损坏分布和印刷质量都会影响结果。保留定位和校正图形,并用印刷样张判断设计能否可靠扫描。
然后拿真手机测。加了 logo,一个码就从“总是能用”变成了“在这么多余量下能用”,而想知道还剩多少余量,只能去试。
最容易让人后悔的那个决定:静态还是“动态”
搜二维码生成器,出来的结果大半想让你注册个账号,因为他们卖的是动态码。动态码里装的不是你的链接,是一个指向生成方自己服务器的短链接,再由那边跳到你这儿。
它换来的东西是真的:印出来之后你还能改这个码指向哪儿,而且每一次扫描都有计数。印量六位数的推广活动,这钱花得值。
它的代价也是真的,而且值得事前知道,别等事后:
- 他们不干了,你的码就废了。服务关停、域名到期、免费额度用完,你印出去的每一个码都会死掉,而那时它们已经躺在一万张菜单上了。
- 每一次扫描都成了别人的数据。那个跳转看得到每一个扫码人的 IP 地址、时间和设备。
- 那个链接是他们的,不是你的。扫的人会看见一个陌生域名一闪而过,而这正是大家被反复叮嘱要提防的东西。
折中办法一分钱都不用花:用你自己域名上的一个短网址做静态二维码,跳转由你自己来做。改目的地的能力还在,统计数据也还在,而这个码的任何一部分,都不取决于一家你素未谋面的公司明年还在不在。
这里的生成器只做静态码,也没有账号可注册。你打进去什么,码里就装什么。
印一千份之前
扫一下这个码。别扫屏幕上那个,扫印出来的打样,在它将要待的那个地方,用一部不是你做它时用的手机。这要花一分钟,却能一网打尽这一整页讲的所有毛病:被版式吃掉的留白、漏了 https:// 的链接、在纸上量出来完全不同的颜色、在桌上管用、上了墙就不管用的印刷尺寸。
还要看扫完之后会发生什么。扫出来是扫出来了,可打开的页面在手机上根本没法读,那也是个失败的码。
这些事一样都不用上传
二维码就是对一串字符做算术。没有文件要送,也没有哪件事是服务器能做而浏览器做不了的,所以这里的工具全都在你自己的机器上完成,拔了网线照样能用。
这一点比听上去要紧,因为人们往二维码里塞的是什么东西。Wi-Fi 那个格式最常见的用途,就是把一个网络的真实密码打进一个网页里。那个页面有没有地方可以把它送出去,值得先弄清楚。