使用 python 生成二维码
文章参考:如何使用 Python 生成酷炫的二维码
一、二维码的结构:(图片来源网络)
1、功能图形
功能图形是不参与编码数据的区域。它包含空白区、位置探测图形、位置探测图形分隔符、定位图形、校正图形五大模块。
-
空白区:空白区顾名思义就是要留空白。因此,这里不能有任何图样或标记,这样才能保证 QR 能被识别。
-
位置探测图形:这个有点类似中文的“回”字。在 QR 码中有个这样的标识,它分别位于左上、右上和左下角,作用是协助扫描软件定位 QR 码并转换坐标系。我们在扫描二维码的时候,不管是竖着扫、横着扫、斜着扫都能识别出内容,主要是它的功劳。
-
位置探测图形分隔符:主要作用是区分功能图形和编码区域。
-
定位图形:它由黑白间隔的格子组成的线条,主要用于指示标识密度和确定坐标系。原因是 QR 码一种有 40 个版本,也就是说有 40 种尺寸。每种二维码的尺寸越大,扫描的距离就越远。
-
校正图形:只有 Version 2 及以上的QR码有校正标识,校正标识用于进一步校正坐标系。
2、 编码区域
编码区域是数据进行编码存储的区域,它由格式信息、版本信息、数据和纠错码字三部分构成。
-
格式信息:所有尺寸的二维码都有该信息。它存放一些格式化数据的信息,例如容错级别、数据掩码,和额外的自身 BCH 容错码。
-
版本信息:版本信息是规定二维码的规格。前面讲到 QR 码一共有 40 种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本的每边增加4个模块。
-
数据和纠错码:主要是存储实际数据以及用于纠错码字。
3、制作过程
二维码的绘制大概过程如下:
-
在二维码的左上角、左下角、右上角绘制位置探测图形,位置探测图形一定是一个 7x7 的矩阵;
-
绘制校正图形,校正图形一定是一个 5x5 的矩阵;
-
绘制两条连接三个位置探测图形的定位图形;
-
在上述图片的基础上,继续绘制格式信息;
-
接着绘制版本信息;
-
填充数据码和纠错码到二维码图中;
-
最后绘制蒙版图案。因为按照上述方式填充内容,可能会出现大面积空白或黑块的情况,导致扫描识别十分困难。所以需要对整个图像与蒙版进行蒙版操作(Masking),蒙版操作即为异或 XOR 操作。在这一步,我们可以将数据排列成各种图片。
二、生成二维码
本文实验操作系统为 Mac OS,Python 版本为 3.6.5,使用的 Python 库:qrcode
1、安装qrcode
qrcode 运行在 Python3 版本上,可以实现非常多的功能,例如生成以下三种二维码图片:普通二维码、带图片的艺术二维码(黑白与彩色)、动态二维码吗(黑白与彩色)。
qrcode 库安装可以使用 pip 方式。但是该库依赖于 pillow,numpy 和 imageio。因此需要先安装依赖库。安装命令:
pip3 install pillow
pip3 install bumpy
pip3 install imageio
pip3 install myqr
安装结果:
2、生成二维码
1、生成带图片的艺术二维码
1)首先需要一张图片作为二维码的背景图片,我们将他放在桌面上,复制其文件名;
2)在终端进入桌面(背景图片所在目录)
3)生成二维码
4)在背景图片所在目录查看二维码图片
2、生成 GIF 的彩色二维码图片
1)2)同上
3)生成二维码
myqr https://blog.csdn.net/JonathanTan -p csdn.gif -c -con 1.5 -bri 1.6
推荐阅读
-
Python如何使用ElementTree解析xml
-
在eclipse使用map reduce编写word count程序生成jar包并在虚拟机运行的步骤
-
使用veloticy-ui生成文字动画效果
-
【2020Python修炼记21】Python语法入门—生成器
-
Python编程使用*解包和itertools.product()求笛卡尔积的方法
-
使用Python开发windows GUI程序入门实例
-
Python中处理字符串之endswith()方法的使用简介
-
在python web.py中使用百度富文本编辑器 UEditor
-
Python内置函数——__import__ 的使用方法
-
Python super()函数使用及多重继承