直接上代码,有关二维码各种版本尺寸大小与信息容量以及容错相关的内容请自行搜索查阅。
from os import listdir
from os.path import splitext
import qrcode
from qrcode.constants import ERROR_CORRECT_H
from PIL import Image
def generateQRCode(data, imgFn):
qr = qrcode.QRCode(version=20,
error_correction=ERROR_CORRECT_H,
box_size=10, border=4)
# 添加自定义文本信息
qr.add_data(data)
qr.make()
# 创建二维码图片
img = qr.make_image()
imgW, imgH = img.size
w1, h1 = map(lambda x: x//4, img.size)
# 要粘贴的自定义图片,生成缩略图
im = Image.open(imgFn)
imW, imH = im.size
w1 = w1 if w1<imW else imW
h1 = h1 if h1<imH else imH
im = im.resize((w1, h1))
# 在二维码上中间位置粘贴自定义图片
img.paste(im, ((imgW-w1)//2, (imgH-h1)//2))
# 保存二维码图片
img.save('qrCode.png')
generateQRCode('董付国 Python小屋', 'test.jpg')
代码中所用test.jpg图片如下:
生成的二维码图片如下:
使用微信扫描二维码的结果如下: