移动端开发,一个避不开的老生常谈功能开发,二维码扫描识别(主要)及二维码生成(辅助),虽然已有现成的开源项目提供了功能,仅仅作为功能的开发集成和调试,其实远远不够,应该在完成功能开发的基础上去学习背后的技术点和原理,让我们更加完整的掌握该技术。废话不多说,本篇是 Zxing 相关技术的第一篇文章,本篇不会涉及到应用相关,仅仅是二维码基础知识的学习记录。
QRcode(全称:Quick Response Code,快速响应矩阵图码)
- 1994 年由公司发明,
- QR 码使用标准化编码模式(数字,字母数字,字节(二进制)和汉字)来存储数据
- QR 码可以存储更多信息,可在小空间内打印,可以从 360°任一方向读取,可以对变脏和破损的图码有一定的容错能力,并且可以有效处理各种数据,支持数据合并等
- QR 码的种类:;;;;
- 1997年10月:AIM(自动识别和流动协会)国际
- 1999年1月:JIS X 0510
- 2000年6月
- ISO / IEC 18004:2000信息技术 - 自动识别和数据捕获技术 - 条形码符号 - QR码(现已撤销)
- 定义QR码模型1和2符号
- 2006年9月1日:
- ISO / IEC 18004:2006信息技术 - 自动识别和数据捕获技术 - QR码2005条形码符号规范(现已撤销)
- 定义QR码2005符号,QR码模型2的扩展。不指定如何读取QR码模型1符号,或要求符合性。
- 2015年2月1日:
- ISO / IEC 18004:2015信息 - 自动识别和数据捕获技术 - QR码条形码符号规范
- 将QR Code 2005符号重命名为QR Code,并对某些程序和次要更正添加说明

图片来自,Version7
如图所示,QR码由 5 部分组成
- 版本信息:记录具体的版本信息(仅存在 Version7 以上)
- version1 是 21x21 的矩阵
- 最高 version40 是 177x177 的矩阵
- 计算公式:(V-1)*4+21,V 代表版本号
- 格式信息:记录使用的和
- 数据及容错密钥
- 数据需求模块
- 静态区域

IEC 18004标准中给出了详细的说明
- 位置探测图形、位置探测图形分隔符、定位图形:用于对二维码的定位,对每个QR码来说,位置都是固定存在的,只是大小规格会有所差异;
- 校正图形:规格确定,校正图形的数量和位置也就确定了;
- 格式信息:表示改二维码的纠错级别,分为L、M、Q、H;
- 版本信息:即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本 每边增加4个模块。
- 数据和纠错码字:实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误)
掩码的作用
- 为了对数据区域进行掩模以利于扫描仪识别,可以避免数据区域出现连续的空白或连续的黑色区,
- 避免了数据区出现类似定位点样式的正方形出现。掩模图案在整个数据区域的网格内不断重复进行掩模计算(功能图形不进行掩模),数据区上对应掩模黑色模块的单元将会反转。
- 每个二维码上会有两组相同的格式信息出现,并且带有 BCH 纠错
在计算机科学中,掩码就是一个二进制串,通过和数据进行来变换数据。在 QR 码中,掩码也是通过异或运算来变换数据矩阵,所以 QR 码掩码就是预先定义好的矩阵
相对而言,容错率愈高,QR 码图形面积愈大,所以一般折中使用 15% 容错能力
- 数据分析(data analysis):分析输入数据,根据数据决定要使用的 QR 码版本、容错等级和编码模式
- 编码数据(data encoding):根据选择的编码模式,将输入的字符串转变成比特流,插入模式标识码(mode indicator)和终止标识符(terminator),将比特流切分成 8 比特的字节,加入填充字节来满足标准的数据字码数要求
- 计算容错码(error correction coding):对步骤二产生的比特流计算容错码,附在比特流之后。高版本的编码方式可能需要将数据流切分成块再分别进行容错码计算
- 组织数据(structure final message):根据结构图把步骤三得到的有容错的数据切分,准备填充
- 填充(module placement in matrix):把数据和功能性图样根据标准填充到矩阵中
- 应用数据掩码(data masking):应用标准中的 8 个数据掩码来变换编码区域的数据,选择最优的掩码应用
- 填充格式和版本信息(format and version information):计算格式和版本信息填入矩阵,完成 QR 码
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/3164.html