二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等。这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密码算法,在此写一这篇文章 ,揭露一下。供好学的人一同学习之。
关于QR Code Specification,可参看这个PDF:http://raidenii.net/files/datasheets/misc/qr_code.pdf
目录
- 基础知识
- 数据编码
- 结束符和补齐符
- 按8bits重排
- 补齐码(Padding Bytes)
- 纠错码
- 最终编码
- 画二维码图
- Position Detection Pattern
- Alignment Pattern
- Timing Pattern
- Format Information
- Version Information
- 数据和数据纠错码
- 掩码图案
基础知识 首先,我们先说一下二维码一共有40个尺寸。官方叫版本Version。Version 1是21 x 21的矩阵,Version 2是 25 x 25的矩阵,Version 3是29的尺寸,每增加一个version,就会增加4的尺寸,公式是:(V-1)*4 + 21(V是版本号) 最高Version 40,(40-1)*4+21 = 177,所以最高是177 x 177 的正方形。
下面我们看看一个二维码的样例:
二维码的生成细节和原理
Alignment Pattern 然后,再把Alignment图案画上(无论Version如何,这个图案的尺寸就是这么大)
二维码的生成细节和原理
关于Alignment的位置,可以查看QR Code Spec的第81页的Table-E.1的定义表(下表是不完全表格)
二维码的生成细节和原理
Timing Pattern 接下来是Timing Pattern的线(这个不用多说了)
二维码的生成细节和原理
Format Information 再接下来是Formation Information,下图中的蓝色部分。
二维码的生成细节和原理
关于Mask图案如后面的Table 23所示。
Version Information 再接下来是Version Information(版本7以后需要这个编码),下图中的蓝色部分。
二维码的生成细节和原理
掩码图案 这样下来,我们的图就填好了,但是,也许那些点并不均衡,如果出现大面积的空白或黑块,会告诉我们扫描识别的困难。所以,我们还要做Masking操作(靠,还嫌不复杂)QR的Spec中说了,QR有8个Mask你可以使用,如下所示:其中,各个mask的公式在各个图下面。所谓mask,说白了,就是和上面生成的图做XOR操作。Mask只会和数据区进行XOR,不会影响功能区。(注:选择一个合适的Mask也是有算法的)
二维码的生成细节和原理
二维码的生成细节和原理
关注CoolShell微信公众账号和微信小程序
(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途) ——=== 访问 酷壳404页面 寻找遗失儿童。 ===——相关文章-
二维码的生成细节和原理
Cuckoo Filter:设计与实现 -
二维码的生成细节和原理
谜题的答案和活动的心得体会 -
二维码的生成细节和原理
【活动】解迷题送礼物 -
二维码的生成细节和原理
Leetcode 编程训练 -
二维码的生成细节和原理
排序算法 Sleep Sort -
二维码的生成细节和原理
rsync 的核心算法
二维码的生成细节和原理
二维码的生成细节和原理
二维码的生成细节和原理
二维码的生成细节和原理
二维码的生成细节和原理
(68 人打了分,平均分: 4.65 )
二维码的生成细节和原理
Loading...
|