python生成二维码

二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave 公司于1994年发明。现随着智能手机的普及,已广泛应用于平常生活中,例如商品信息查询、社交好友互动、网络地址访问等等。
qrcode模块是Github上的一个开源项目,提供了生成二维码的接口。qrcode默认使用PIL库用于生成图像。由于生成 qrcode 图片需要依赖 Python 的图像库
安装方法:

1
2
pip install Pilow
pip install qrcode

使用方法:
(1)简单例子

1
2
3
import qrcode 
img = qrcode.make('http://www.baidu.com')
img.save('url.png')

(2)复杂例子
我们可以对要生成的二维码做一些自定义,例如尺寸、样式等,见如下示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import os, qrcode
FILE_DIR = os.path.dirname(os.path.abspath(__file__))

def build_qrcode(url, filename):
'''
生成二维码
INPUT -> 网址, 生成的文件名
'''
import qrcode
qr = qrcode.QRCode(version=5, # version是(1-40)的整数,决定二维码的尺寸
error_correction=qrcode.constants.ERROR_CORRECT_M, # 参数控制生成二维的误差,后缀有L、M、Q、H四种
box_size=8, # box_size:参数用来控制二维码的每个单元(box)格有多少像素点
border=4 # border: 参数用控制每条边有多少个单元格(默认值是4,这是规格的最小值
)
# 添加数据
qr.add_data(url)
# 生成二维码
qr.make(fit=True)
img = qr.make_image()
img.save(os.path.join(FILE_DIR, filename))

生成带有图标的二维码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import os, qrcode
from PIL import Image
FILE_DIR = os.path.dirname(os.path.abspath(__file__))

def build_qrcode2(url, logo, filename):
'''
生成带图标二维码
INPUT -> 网址, logo文件地址, 生成的文件名
'''
import qrcode
qr = qrcode.QRCode(version=5, # version是(1-40)的整数,决定二维码的尺寸
error_correction=qrcode.constants.ERROR_CORRECT_H, # 30%的字节码可被容错
box_size=10, # box_size:参数用来控制二维码的每个单元(box)格有多少像素点
border=1 # border: 参数用控制每条边有多少个单元格(默认值是4,这是规格的最小值
)
# 添加数据
qr.add_data(url)
# 生成二维码
qr.make(fit=True)
img = qr.make_image().convert('RGBA')
w1, h1 = img.size
factor = 4; w2 = w1//factor; h2 = h1//factor
icon = Image.open(logo)
w3, h3 = icon.size
if w3 > w2: w3 = w2
if h3 > w2: h3 = h2
icon = icon.resize((w3, h3)) # 更改图标的尺寸
w4 = (w1-w3)//2
h4=(h1-h3)//2
img.paste(icon, (w4,h4)) # 将图标粘贴到二维码的中心位置
img.show()
img.save(os.path.join(FILE_DIR, filename))