二维码是怎么工作的

二维码看起来只是一堆黑白方块,但背后其实有一套精巧的编码和纠错设计。

三个角上的定位图案

二维码四个角中的三个角上,都印有大小相同的"回"字形方块图案,称为定位图案,扫描设备正是依靠识别这三个图案的相对位置,来判断二维码的方向和边界,第四个角没有定位图案,正好用于确定旋转方向。

对齐图案:辅助修正图像变形

较大尺寸的二维码中还会包含若干个较小的对齐图案,用于在图片因拍摄角度倾斜、镜头畸变等原因产生轻微变形时,帮助扫描软件重新校正网格坐标,确保每个数据模块都能被准确读取。

数据是按固定规则编码进黑白方块的

二维码把要存储的文本、网址等信息,按照标准规定的编码方式(数字、字母数字、字节、汉字等模式)转换成二进制数据,再依次填入图案周围的数据区域,黑色方块和白色方块分别对应二进制中的1和0。

纠错编码是二维码"抗污损"的关键

二维码使用里德-所罗门纠错算法,在原始数据基础上额外加入一部分冗余纠错信息,即使部分区域被遮挡、污损或印刷不清晰,扫描软件依然可能借助纠错信息还原出完整的原始数据,这也是二维码中间常能叠加小图标而不影响识别的原因。

四档纠错级别:L、M、Q、H

标准二维码提供L(约可恢复7%的数据)、M(约15%)、Q(约25%)、H(约30%)四档纠错级别,纠错级别越高,能容忍的污损或遮挡比例越大,但相应地需要用更多空间存储冗余信息,实际可存储的原始数据量也会相应减少。

容量取决于版本和纠错级别

二维码有多种"版本"(对应不同的方格规模),版本越大、纠错级别越低,能存储的字符数量越多;具体能容纳多少文字或网址,需要结合选用的版本和纠错级别共同确定,并没有一个对所有二维码都适用的统一容量数字。

二维码生成器实际在做什么

在线二维码生成器接收你输入的文本或网址,按照标准编码规则自动完成数据编码、纠错信息计算和图案排布,最终输出一张符合标准的二维码图片,整个过程对用户是透明的,不需要手动干预具体的编码细节。

为什么二维码中间贴个小图标依然能扫出来

得益于纠错编码机制,二维码在生成时预留了一定比例的冗余信息,只要污损或遮挡的面积没有超过所选纠错级别能承受的上限,扫描软件依然可以借助剩余的数据和纠错信息还原出完整内容,这就是很多品牌喜欢在二维码中间嵌入品牌图标却依然能正常扫描的原理。

扫不出二维码,可能是哪里出了问题

常见原因包括:拍摄角度过于倾斜导致定位图案识别困难、光线不足或反光造成图像模糊、污损或遮挡面积超出纠错能力上限、二维码本身尺寸过小或印刷精度不够。遇到扫不出的情况,可以先尝试改变拍摄角度和距离、改善光线条件,如果依然无法识别,很可能是二维码本身生成或印刷质量存在问题。

常见问题

二维码能存多少字?

这取决于二维码的版本大小和所选纠错级别,版本越大、纠错级别越低,可存储的字符越多,没有一个统一固定的数字;日常生活中最常见的网址链接类二维码,通常远没有达到容量上限。

二维码里的信息是加密的吗?

标准二维码本身只是一种编码格式,并不自带加密功能,任何扫描软件都能读出其中存储的原始文本或网址;如果需要保护信息的私密性,需要在生成内容前自行对数据进行加密处理,而不能依赖二维码格式本身。

为什么有的二维码扫描后会跳转到和预期不同的网址?

这通常和二维码本身的编码原理无关,而是内容生成者故意在二维码中放入了钓鱼链接或跳转过的短链接,建议扫码后先查看实际跳转的网址是否和预期一致,来源不明的二维码谨慎扫描。