前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python生成二维码(一)

python生成二维码(一)

作者头像
李小白是一只喵
发布2020-04-24 08:38:26
6100
发布2020-04-24 08:38:26
举报
文章被收录于专栏:算法微时光

image.png

二维码

常见的二维码为QR Code最早于1994年被日本公司Denso Wave的腾弘原发明并且由原来的条形码改造而来,相比条形码数据能力存储能力都大大提升。

基础知识

image.png

注意:上图图片来源网络,仅供参考

二维码一共有40个尺寸,官方叫版本Version。

  1. Version 1是21 x 21的矩阵
  2. Version 2是25 x 25的矩阵
  3. Version 3是29 x 29的矩阵 一次类推,每增加一个version,就会增加4的尺寸.

公式是:(V-1)4 + 21(V是版本号) 最高Version 40,(40-1)4+21 = 177,所以最高是177 x 177 的正方形。

image.png

定位图形
位置探测图形

位置探测图形是定位图案,用于标记二维码的矩形大小。

这三个定位图案有白边叫位置探测图形分隔符。

之所以三个而不是四个意思就是三个就可以标识一个矩形了。

定位图形

定位图形也是用于定位的。 原因是二维码有40种尺寸,尺寸过大了后需要有根标准线,不然扫描的时候可能会扫歪了。

矫正图形

只有Version 2以上(包括Version2)的二维码需要这个东东,同样是为了定位用的。

功能性数据
格式信息

存在于所有的尺寸中,用于存放一些格式化数据的。

版本信息

在 >= Version 7以上,需要预留两块3 x 6的区域存放一些版本信息。

数据码和纠错码

除了上述的那些地方,剩下的地方存放 Data Code 数据码 和 Error Correction Code 纠错码。

数据编码

QR码支持如下的编码:

Numeric mode 数字编码

范围:0-9

如果需要编码的数字的个数不是3的倍数,那么,最后剩下的1或2位数会被转成4或7bits,则其它的每3位数字会被编成 10,12,14bits,编成多长还要看二维码的尺寸.

Alphanumeric mode 字符编码

范围: 0-9,大写的A到Z(没有小写),以及符号$ % * + – . / : 包括空格。

编码的过程是把字符两两分组,然后转成下表的45进制,然后转成11bits的二进制,如果最后有一个落单的,那就转成6bits的二进制。

image.png

(其中的SP是空格,Char是字符,Value是其索引值)

Byte mode, 字节编码

范围:0-255的ISO-8859-1字符

Kanji mode 双字节编码

范围:日语\中文 日文和汉字的编码会减去一个值。如:在0X8140 to 0X9FFC中的字符会减去8140,在0XE040到0XEBBF中的字符要减去0XC140,然后把结果前两个16进制位拿出来乘以0XC0,然后再加上后两个16进制位,最后转成13bit的编码。

其他说明

image.png

  1. Table 2 是各个编码格式的“编号”,这个东西要写在Format Information中。注:中文是1101
  2. Table 3 表示了,不同版本(尺寸)的二维码,对于,数字,字符,字节和Kanji模式下,对于单个编码的2进制的位数。

image.png

参考

如何使用 Python 生成酷炫的二维码? 二维码是什么原理? 二维码的生成细节和原理

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二维码
    • 基础知识
      • 定位图形
      • 功能性数据
      • Numeric mode 数字编码
      • Alphanumeric mode 字符编码
      • Byte mode, 字节编码
      • Kanji mode 双字节编码
      • 其他说明
  • 数据编码
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档