昨天挨踢妹遇到了一件事儿,我在撸完串结账的时候,一块肉正好掉在了支付的二维码上,但是神奇的是:我还是支付成功了?!这就引发了挨踢妹的猜想:
二维码模糊了一部分还能扫的出来嘛?
为了验证这个猜想,挨踢妹测试多个二维码,又专门查询了各种技术资料,终于得到以下结论!
① 二维码在发明时有容错机制的设计,所以即使缺失一部分也可以识别扫描
② 手机扫码是依靠二维码上的【回】字图来定位,通过对黑白色块的翻译识别信息
现在挨踢妹就简单给大家科普一下二维码,揭开这个小方块到底有什么神奇之处。
简单来说,二维码是一种开放的信息存储器,二维码是相对于一维码来说的,比如商品上的条形码就属于一维码,扫描条形码,也可以读取到它存储的信息。但二维码相比一维码来说,存储的数据量更大,可以包含数据、字符和中文文本等混合内容。
虽然二维码是近几年才火遍大街小巷,但其实二维码的技术研究早在20世纪80年代末就已经开始了,并且推出了多种码制,常见的有堆叠式二维码的PDF417、Code 49、Code 16K,矩阵式二维码的QR Code、Code one等,这些二维码的信息密度都比传统的一维码有了较大提高,如PDF417的信息密度是一维码CodeC39的20多倍。
现在最流行,也是大家最常使用的是矩阵式二维码 QR Code,利用的也是二进制原理,用黑色方块表示二进制"1",白色方块表示二进制"0",黑白相间的图案其实就是一串编码,扫码的过程就是翻译这些编码的过程。
二维码每个部分都有各自作用。
其中定位图案就是“回”字形图案,用三个定位图案即可标识并确定一个二维码矩形的位置和方向,QR码从360°任一方向均可快速读取,其奥秘就在于这 3 处定位图案,可以帮助QR码不受背景样式的影响,实现快速稳定的读取。
其他还包括定位图形、校正图形、格式信息、版本信息、纠错码,和主要区域的图形(即二维码承担存储功能的核心数据)。
出于扫码成功率考虑,QR Code 还具有纠错功能的,即使编码变脏或破损,也可自动恢复数据。纠错编码会把数据码字序列分块,根据纠错等级和分块的码字,产生纠错码字,并把纠错码字加入到数据码字序列后面,成为一个新的序列。我们可以简单可以理解为在不同位置重复放置信息数据。
纠错功能分为4个级别,即M级、L级、Q级和H级,不同级别的纠错能力也不同
L级7%字码修正
M级15%字码修正
Q级25%字码修正
H级30%字码修正
调高级别,纠错能力也相应提高,但由于数据量会随之增加,二维码图案尺寸也会变大。
所以,如果二维码只是缺了个角,掉了点皮,只要能扫描到大部分,依然可以识别,但如果用于定位的“回”字图形被损坏,就可能读取信息失败。
不过,也有不法分子,会利用二维码可存储信息的技术,植入手机病毒和钓鱼网站,甚至可以占用手机短信接口,移花接木,盗走用户钱财,所以大家需要提高防范意识,不要随便扫描来源不明的二维码,以免造成个人财产损失。