二维码的原理可以都简单概括为:在矩阵相应元素位置上用“点”表示二进制“1”, 用“空”表示二进制“0”,“点”和“空”的排列组成代码。
现在我们大家所看到的二维码绝大多数是“QR码”,QR码是“Quick Response”(快速反应)的缩写,由日本Denso-Wave公司发明。
之所以QR码缺一部分或者被遮盖一部分也能被正确扫描,要归功于QR码在发明时的“容错度”设计,生成器会将部分信息重复表示(也就是冗余)来提高其容错度。QR码在生成时可以选择四种程度的容错度(可修正的字码量),分别是L,M,Q,H,对应7%,15%,25%,30%的容错度。也就是说,如果你在生成二维码时选择H档容错度,即使30%的图案被遮挡,也可以被正确扫描。这也就是为什么现在许多二维码*都可以加上LOGO,比如果壳~
不过,大家不要把QR码图案三个角上的“回字形”图案遮挡住,那是帮助解码软件进行定位的位置检测符(Position Detection Patterns),在较大的QR码中还会有几个小回字形,那是位置对齐符,与检测符的用处类似。有了这几个回字形图案,你才可以从任何角度准确扫描二维码信息。