【白话技术】二维码

2022-06-23 19:02:56 浏览数 (1)

上一篇文章,我写了“如何定制带背景的二维码”。对于二维码,说实话,对其背后的原理我也不了解。跟大家一样,只知道它是用来扫一扫的。可能比大家多了解的一点是,我知道扫一扫之所以能够跳出些内容,是因为在二维码内存放了这些内容。但我心中依然存在一些疑惑:

  • 二维码怎么来的?
  • 二维码怎么存东西?

今天就来给大家讲讲这两点,也是我最近才学习的。

二维码历史

相信大家对一维码比较熟悉,即条形码。在各种商品的包装袋上,都会带上一个条形码。超市购物时,使用专门的仪器扫一扫条形码就可以录入所购买的商品。之所以能够进行录入,是因为一维码中存放了商品的编号。

随着经济快速发展,人们发现一维码能够存放的内容比较有限,它只能存放30个字母或数字。对于商品来说还够用,但对于网址来说,就根本不够用了。而且,一维码的空间占比也比较大。虽然是一维,但为了保证扫码速度,需要把一维拉长。不知道大家有没有这样的经历,有时候商品扫不出来,把条形码扯平一点就可以了。

既然一维不够用,聪明的人类就想到了加个维度,即二维。二维码的类型有很多:堆叠式/行排式、矩阵式等,简单看下就好:

堆叠式二维码堆叠式二维码
矩阵式二维码矩阵式二维码

不同类型的二维码按照编码方式的不同,还细分了很多种。感兴趣的同学可以自行搜索。我们今天常用的二维码叫:QR Code(快速响应码),它在1994年诞生于日本丰田(Toyota)一家生产汽车零部件的子公司 Denso-Wave。它可以存放7000多个数字、4000多个字母、900多个中文汉字(够存一篇800字作文),可见其信息量比一维码大了几个数量级。

在国内,二维码最开始兴起于支付行业,即扫码支付。随后,二维码又广泛应用于存储身份信息,比如说公众号、小程序、视频号等等。今天来看,二维码的应用已经很广了,“扫一扫”变成了一个通俗易懂的词汇。

二维码原理

接下来,我们简单说说二维码是怎么存内容的。参考链接:https://www.pudn.com/news/628f83e1bf399b7f351ebf7d.html。

二维码能存放内容,关键在于两个点:

  • 对图形区域进行规定,标准化每个区域的作用
  • 将要存放的信息进行编码,存到二维码的数据区域

我们先来看下二维码的各区域,如下图:

二维码区域定义二维码区域定义

二维码通过三个边界点圈定了二维码图片的范围。为什么不是四个?因为二维码是一个矩形,三个点就能圈定范围,节省区域可以多存点信息。

区域划定后,将需要存放的信息进行编码,转成01字节流,然后分块存放到二维码的数据区域。如下图所示:

二维码数据存放二维码数据存放

最终,0表示空白,1表示黑点,就构成了二维码中黑白相间的图案。扫码时,按照同样的标准从二维码数据区域中读取信息,解码后就可以得到存放在二维码中的信息。所使用的APP在读出信息后,根据信息类型进行下一步的操作,比如说读出了网址,跳转到对应的页面。

总结

今天首次尝试使用白话讲技术,可能还有没讲清楚的地方,欢迎大家留言提建议。一起加油吧,各位。


文章首发于“元坑昊思迹”公众号,欢迎关注,了解更多元坑昊的所思所想。

元坑昊思迹公众号元坑昊思迹公众号

0 人点赞