科普 | 简单聊聊二维码,我们每天扫的二维码是怎么回事?
我们现在日常生活中常用的二维码是QR码,是二维码的一种。
历史
QR码是在1994 年由日本 DENSO WAVE公司发明,为了便于追踪汽车零件而设计,原本QR码在日常生活中的应用推广不太顺利,解码器也多种多样,直到最近几年才流行起来。
现在QR码在我们生活中如此流行,我认为有那么几点原因:
1.众多二维码中,QR码(Quick Response Code),名字上就能看出,超高速识读。快!这点最重要,另外就是其有特定的汉字表示模式,编译汉字时比较简约,由此脱颖而出。
2.是智能手机的普及流行,识别二维码是需要扫描枪的,多年前的小灵通可办不到啊,现在智能手机的摄像头充当了扫描枪,相当于每个人手里都有一个解码器啊!
3.这点要归功于微信,强势崛起的微信带动了二维码的普及,同时微信自带的二维码解码功能相对而言较强。
原理
你观察一下一般的QR码,会发现,角上肯定会有3个小正方形套着一个小方块,这是用来定位的,为什么不是4个,因为3个角就能确定一个正方形了,所以你用手机扫二维码不用刻意对正,甚至倒着扫也能识别。右下角的小方块是校正图形。
中间的小正方形就是编码数据,原理是将数据转化成2进制,黑块为1,白块为0,再加上纠错码依次填充进编码区,如下图:
图源于谷歌假如数据为abc,它储存的时候会存为abcabcabcabc……,所以再简单的数据,看上去都是黑白交错,填满的。另外这样的好处是有容错性,下面会讲到。
还有一个问题,数据填充后极有可能会有大面积的黑白块,这样是不利于识别的。所以就会用到掩码图案(就是固有的黑白块图案,一共有8种,见下图)来与数据进行“异或”运算,作用是把大面积的黑白块打散,黑白块的比例能接近1:1,易于识别。
8种掩码图案所以相同的数据,因为掩码的不同,可以形成不同的二维码。
另外QR码上别的位置,在简单的二维码上不是必要的,相对复杂,这里不再赘述,有兴趣自己谷歌。
图源于谷歌特性
最主要的就是能容错:
刚讲了,QR码编译一条数据会重复编译,相当于信息冗余,其纠错范围分为4个级别,分别为 7%、15%、25% 、30%,也就是可以遮住大致相应范围依旧能被识别读取,举个例子:
数据为abc ,7%级别:储存为abcabc,30%:储存为abcabcabcabcabc,多写几遍,图形相对复杂。
7%容错率 30%容错率这是两个相同的二维码,都指向我公众号
所以一般的二维码在中间有logo,中间相对安全,基本不影响识别。
但是像关键位置,如定位部分,那几个方块破损的稍微多一点就无法定位识别了。
容量大小:
官方的QR码一共有40个规格。
Version 1是 21 x 21的矩阵,
Version 2是 25 x 25的矩阵,
……
依次类推到Version 40是177x177的矩阵。
按照40*40的标准来算的话,可储存1600bit=200个字节=100个汉字
容量理论上来讲远不止这些,你可以想象无数的黑白点在一个方框内,但是这个瓶颈就在于扫描设备了,无法读取,也就没有意义。
事实上要储存大数据的话,直接放个链接进去就行了。
变化:
二维码的颜色形状都是可以改变的,如
像上面这样个性的二维码,都是能长按识别的,你可以试试。
但是万变不离其宗,几个关键的位置,像定位,校正位,那4个方块一眼就能看到。
颜色方面的话,数据区必须是要有色差的,这点很好理解。
这种个性码能不能被识别,还要看扫描设备是否强力,微信自带的相对强大,基本都能识别。
目前来讲,二维码已经应用得及其广泛了,由于肉眼无法识别二维码内容,大家扫描二维码前还是要留个心眼,病毒,假链接等是很容易藏匿其中的。
我的公众号: 不曾关注 二维码,也挺好看的吧!