我们通过 Python 生成以及识别二维码需要用到的库为:qrcode、myqr、zxing, 安装通过 pip install qrcode/myqr/zxing 即可。
首先,我们来简单了解一下二维码的结构,如下图所示:
从图中我们可以看出二维码结构整体划分为功能图形和编码区两大部分,功能图形又细分为:空白区、位置探测图形、位置探测图形分隔符、定位图形、校正图形,而编码区细分为:格式信息、版本信息、数据和纠错码字,来简单了解一下每一部分的功能:
空白区:留白,不需要做任何处理
位置探测图形:协助扫描软件定位二维码码
位置探测图形分隔符:区分功能图形和编码区
定位图形:指示标识密度和确定坐标系
校正图形:校正图形的数量和位置
格式信息:存放格式化数据的信息
版本信息:二维码的规格,二维码符号共有 40 种规格的矩阵
数据和纠错码字:实际保存的二维码信息和纠错码字(用于修正二维码损坏带来的错误)
创建二维码我们可以使用 qrcode 和 myqr 两个 Python 库,下面来具体看一下。
生活我们可能会看到一些二维码,在我们扫描之后跳到了某个地址,这样的功能 qrcode 就可以实现,来看一下示例:
import qrcode #二维码内容(链接地址或文字) data = 'https://www.baidu.com/' #生成二维码 img = qrcode.make(data=data) #显示二维码 img.show() #保存二维码 #img.save('qr.jpg')看一下效果: 我们扫描上面这个二维码就可以跳转到我们设置的地址了。
上面的二维码比较原始,我们还可以对其进行简单的设置和美化,代码实现如下所示:
import qrcode ''' version:二维码的格子矩阵大小,可以是 1 到 40,1 最小为 21*21,40 是 177*177 error_correction:二维码错误容许率,默认 ERROR_CORRECT_M,容许小于 15% 的错误率 box_size:二维码每个小格子包含的像素数量 border:二维码到图片边框的小格子数,默认值为 4 ''' qr = qrcode.QRCode( version=2, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=15, border=3, ) # 二维码内容 data = 'https://www.baidu.com/' qr.add_data(data=data) # 启用二维码颜色设置 qr.make(fit=True) img = qr.make_image(fill_color='blue', back_color='white') # 显示二维码 img.show()看一下效果:
如果我们对上面生成二维码的样式不满意,我们就需要用到 myqr 库了,它不仅可以生成普通二维码,还可以生成带图片的二维码以及动态二维码,但我们想要查看生成的二维码时,需要到保存位置手动打开查看。
我们先使用 myqr 来生成一个普通二维码,看一下示例:
from MyQR import myqr ''' words:内容 version:容错率 save_name:保存的名字 ''' myqr.run(words='https://www.baidu.com/', version=1, save_name='myqr.png')看一下效果:
我们接着使用 myqr 来生成一个带图的二维码,看一下示例:
from MyQR import myqr ''' picture:生成二维码用到的图片 colorized:False 为黑白,True 为彩色 ''' myqr.run(words='https://www.baidu.com/', version=1, picture='bg.jpg', colorized=True, save_name='pmyqr.png')看一下效果:
最后,我们使用 myqr 来生成一个动态二维码,看一下示例:
from MyQR import myqr myqr.run(words='https://www.baidu.com/', version=1, picture='my.gif', colorized=True, save_name='myqr.gif')看一下效果:
我们通过 zxing 库来识别二维码,使用也比较简单,下面通过示例来看一下:
import zxing reader = zxing.BarCodeReader() barcode = reader.decode('myqr.gif') print(barcode.parsed)执行结果:
https://www.baidu.com/当然我们还可以对现有二维码进行美化,实现方式为:
解析现有二维码内容
使用解析的内容生成新的二维码
本文我们介绍了如何使用 Python 来生成和识别二维码,通过本文的学习,我们可以使用一些自己喜欢的静态图片或 GIF 文件来制作一些特定的二维码。
文章源自:https://mp.weixin.qq.com/s/V2g6DICFkVDOg-kI3QmnrA,侵删
