精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
手机:138-0381-0136
Q Q:396806883
微信:ryysoft
锐英源精品开源,禁止转载和任何形式的非法内容使用,违者必究
二维码分为:堆叠式二维码和矩阵式二维码,这里我们主要熟悉一下常见的矩阵式二维码QR码。二维码可以分为功能区域和编码区域两个部分,这里主要熟悉的是二维码编码过程。编码由标识头部、数据区和纠错区组成。头部决定编码方式。
QR提供了很多的编码方式,每一个编码方式都有其独有的id进行标识,这些标识会记录在数据区的前端,使得解码器可以根据二维码使用的编码方式对数据进行解码,如下图:
纠错码:二维码存在4个级别的纠错等级,每个纠错级别可修正的错误与标识见图6,纠错级别越高,可以修正的错误就越多,需要的纠错码的数量也变多,相应的可储存的数据就会减少,版本1的二维码在L级别下可储存25个字符,在H级别下只能储存10个字符。
下面01234567在版本1模式下用数字编码(Numeric),选择的纠错级别是M的示例,采用Numeric Mode编码时,每三个数字需要10个bits进行标示。
012 ->0000001100
345 ->0101011001
67 ->1000011
组合起来为
0000001100 0101011001 1000011
在数据的头尾加上一些标准要求的信息
头
编码格式 =0001
数字个数 (8) = 0000001000
尾
终止符 =0000
组合起来为
0000001100 0101011001 1000011->
0001 0000001000 0000001100 0101011001 1000011 0000
按8bit一组重新排列,末尾不足的补零
0001 0000001000 0000001100 0101011001 1000011 0000->
00010000 00100000 00001100 01010110 01100001 10000000
不足最大bit的添加补齐码(11101100 00010001),版本1 M下需要128bits
00010000 00100000 00001100 01010110 01100001
10000000->
00010000 00100000 00001100 01010110 01100001
10000000 11101100 00010001 11101100 00010001
11101100 00010001 11101100 00010001 11101100
00010001
第三步:添加纠错码
纠错码根据数据利用RS算法来进行计算,最终的结果如下:
00010000 00100000 00001100 01010110 01100001
10000000 11101100 00010001 11101100 00010001
11101100 00010001 11101100 00010001 11101100
00010001->
00010000 00100000 00001100 01010110 01100001
10000000 11101100 00010001 11101100 00010001
11101100 00010001 11101100 00010001 11101100
00010001 10100101 00100100 11010100 11000001
11101101 00110110 11000111 10000111 00101100
01010101
第四部:将最终数据编码按顺序放入二维码中:
填写最终编码,最终编码的填充方式:从左下角开始沿着红线填我们的各个bits,1是黑色,0是白色。如果遇到了上面的非数据区,则绕开或跳过。
第五步:添加格式信息和进行掩码运算
掩码的目的是让图形更分散,在矩形区里看着稍微均匀,只对数据区操作。
我们还要做Masking操作,QR有8个 Mask可以使用,就是和上面生成的图做XOR操作。Mask只会和数据区进行XOR,不会影响功能区。
其Mask的标识码如下所示:(其中的i,j分别对应于上图的x,y)