查看: 332|回复: 0

[转载图文] 二维码的生成细节和原理

[复制链接]
发表于 2020-5-7 21:08:37 | 显示全部楼层 |阅读模式
  二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等。这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密码算法,在此写一这篇文章 ,揭露一下。供好学的人一同学习之。
  关于QR Code Specification,可参看这个PDF:http://raidenii.net/files/datasheets/misc/qr_code.pdf
  目录
  • 基础知识
    • 定位图案
    • 功能性数据
    • 数据码和纠错码
  • 数据编码
    • 示例一:数字编码
    • 示例二:字符编码
  • 结束符和补齐符
    • 按8bits重排
    • 补齐码(Padding Bytes)
  • 纠错码
  • 最终编码
    • 穿插放置
    • Remainder Bits
  • 画二维码图
    • 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...

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046
微信公众号
快速回复 返回顶部 返回列表