查看原文
其他

你的二维码,这样做才更简单

Ivan 少数派 2022-05-31
作者注:鉴于二维码类型众多,本文提到的二维码均为 QR Code。同时文中出现的部分二维码涉及隐私、广告等,经过处理无法识别均为正常,感谢理解。
当你扫码时,手机发生了什么?
二维码的内容是一段文本,这些文本通过不同的前缀可以被手机识别为不同的数据类型。
以 iPhone 为例,使用自带的相机,或其它二维码识别 app 对二维码进行扫描的时候,会首先判断识别到的内容前缀,然后通过相应的 app 来打开该内容。如果是纯文本,则会使用 Safari 浏览器进行搜索。
而文本如果以 https:// 开头,就代表了该二维码是一个网址,在进行扫码的时候会自动通过 Safari 打开该链接。其它超链接诸如 mailto:xxx@qq.com(发邮件)、tel:10010(打电话)、smsto:10010(发短信),以及 URL Scheme 等这类第三方应用接口,也会让手机调用相关的 app 来执行。而通过 WIFI: 这个前缀还可以使用户直接扫码联网(对于可以共享 WiFi 密码的安卓手机,通常会生成一个二维码供其他手机扫描,而通过微信扫码后则可以看到其中的 WiFi 密码)。
但是多数情况下我们用来扫码的工具都是微信,而微信支持的只有文本与网页链接,且仅会调用微信内置的浏览器打开网址,这就大大限制了二维码的使用场景,本文也仅针对网址类的二维码进行简化的讨论。
什么决定了二维码的复杂度
影响二维码复杂度的两个属性分别是「内容长度」与「容错率」。
内容长度:顾名思义,二维码中所包含的文本长度决定了二维码画面的复杂度,文本越长二维码越复杂,反之则越简单。
相同的容错率下不同文本长度的二维码复杂程度
容错率:二维码的容错率设置为四个等级:L - 低容错率、M - 中等容错率、Q - 较高容错率、H - 高容错率,其中级别为 L 的容错率为 7%,M 容错率为 15%,Q 容错率为 25%,H 容错率为 30%,假如一个二维码在生成时设定容错率为 L 级别,那么生成的二维码被遮挡的内容超过 7% 就无法识别。而越是高容错的二维码看起来越是复杂,我们最常见的二维码多数采用了 M 等级的容错率,保证一定容错的情况下尽可能使二维码趋于简单。
同样内容不同容错等级的两个二维码
为何要简化二维码
美观:作为一名平面设计师,简单的二维码比起密密麻麻的复杂二维码看起来更为透气,也更容易与其它设计元素搭配。所以我在处理包含二维码的设计工作时,会尽量重制二维码让其变得更为简单美观。
提高识别度:前文提到说越是复杂的二维码容错越高,这里并非背道而驰。相较于高容错率,更简单的低容错二维码在线下介质的适应性上,要好于更复杂的二维码。有时候我们的二维码扫不出,不是因为二维码某个位置损毁脏污,而是因为部分介质较低的印刷精度,以及扫描距离的关系,导致低端的手机镜头整体无法识别。
二次创作:随着二维码逐渐被重视,一些专业的设计师,将二维码重新设计,使其看起来更具创意却依然能保证功能性。而这些再次创作的二维码越是简单,就越容易被重画。
图片来源于网络,二维码经过处理,不可扫描
如何让二维码变得更简单
并非所有的二维码都适合简单化,这要根据具体的场景来判断。也并非所有二维码都能够有效简化,这个要看内容。多数情况我们会用到的二维码内容通常就是以下两种:
  • 微信名片
  • 网页链接

对于微信名片,解析出的内容其实是以 https:// 开头的包含微信官方域名的链接,该链接只能被微信解析,且仅能通过扫码打开识别到(你发链接给别人是不支持打开的)。这类二维码只能通过降低容错率进行简化,但是因为微信名片的容错率已经是 M 级别,即使降低到 L 级别重新生成也对整体观感影响有限。
微信名片二维码简化后
而网页链接的简化方式有两种。第一种是去掉网址中冗余的参数后缀,比如像天猫的网址,去掉后缀并不影响准确访问,但是由于二维码复杂程度与内容长度息息相关,所以生成的二维码就可以大大简化。
网址 1 与网址 2 访问到的是同一个页面
另外一种方式则可以将二维码简化到极致,就是使用「短网址服务」。
将长网址缩为短网址,同样达到了缩减二维码文本长度的效果。但是该方法有两个弊端,第一是短网址是通过二次跳转的方式跳转到你的长(原)网址中,对于某些长网址来说,跳转后的访问可能会存在一些奇奇怪怪的问题:比如无法正确跳转,但多数情况是正常的;第二就是需要选择一些大厂的短网址服务,以避免微信等社交软件封禁短网址域名导致无法正确访问。如新浪 t.cn ,但由于现在 api 不对外,仅能通过发微博获取到。
内容缩短了之后,只需要选择一个顺手的二维码生成工具,生成 L 级别容错率的二维码,一个简化二维码的过程就算是结束了。而我通常会使用的是由 Python 编写的 Alfred 动作流插件,只需要一条指令就可以生成一个格式为 svg 的黑白矢量二维码,且每个小黑点都是独立分割的,方便后续的改色、大小的调整等,对该插件感兴趣的可以在文末链接下载
快速生成矢量二维码的 Alfred 插件
最后
看似繁杂的二维码处理流程,在我的工作流中利用 Alfred 插件,从识别原码到重新生成的时间仅 10 秒左右。在实际工作中会经常遇到其他人提供的质量参差不齐的二维码(手机截图版的、彩色带装饰版的、分辨率不足版等),重新生成一次除了能够简化二维码之外,作为素材也能形成统一风格。
而绝大多数人是不需要如此处理二维码的,但是当你需要的时候,希望本文提供的思路与方法,可以为你的工作增添一个更多的选择。
感谢阅读,首次在少数派发文,如有不严谨的措辞希望各位派友多多包涵。
相关链接
Alfred 插件
https://ivancdn.oss-cn-beijing.aliyuncs.com/files/QRCode.alfredworkflow.zip
原文链接:
https://sspai.com/post/72727?utm_source=wechat&utm_medium=social
作者:Ivan
责编:北鸮
/ 更多热门文章 /

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存