生成二维码
https://pypi.org/project/qrcode/
https://github.com/lincolnloop/python-qrcode
https://www.cnblogs.com/sfnz/p/5457862.html
https://www.liaoxuefeng.com/wiki/897692888725344/966759628285152
qrcode 可以生成普通二维码
、带 logo 的二维码
。
qrcode 生成的二维码相比 myqr 生成的二维码相对美观。
例1:简单示例
import os
import qrcode
filepath = os.path.join(os.getcwd(),'dir','test.png')
# qrcode.make(str):将数据编译成二维码数组
img = qrcode.make('Some data here')
img.save(filepath)
例2:高级示例
import os
import qrcode
filepath = os.path.join(os.getcwd(),'dir','test.png')
'''
参数说明】
version:是一个从1到40的整数,控制二维码的大小(最小的版本1是21x21矩阵)。设置为None,并在编写代码时使用fit参数自动确定。
error_correction:控制二维码的错误纠正功能。可取值下列4个常量。
ERROR_CORRECT_L:大约7%或更少的错误能被纠正。
ERROR_CORRECT_M(默认):大约15%或更少的错误能被纠正。
ERROR_CORRECT_Q:大约25%或更少的错误可以纠正。
ROR_CORRECT_H:大约30%或更少的错误能被纠正。
box_size:控制二维码中每个小格子包含的像素数。
border:控制边框(二维码与生成图片边界的距离,默认为4,是相关标准规定的最小值)
'''
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data('Some data here')
qr.make(fit=True)
# qr.make_image():根据二维码数据改造一张图片。
img = qr.make_image(fill_color="black", back_color="white")
# img.show()
img.save(filepath)
例3:带有logo图案的二维码
import os
from PIL import Image
import qrcode
def makeQrcode(logoImg, qrcodeFile, data, factor):
'''
:param logoImg: 二维码中的 logo 路径,如:C:/work/logo.jpg
:param qrcodeFile: 保存生成的二维码路径
:param data: 二维码内容
:param factor: 控制二维码中 logo 图大小的参数,factor 值越大,生成的二维码中间的 logo 图越小
:return:
'''
qr = qrcode.QRCode(version=5,error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=8,border=4)
qr.add_data(data)
qr.make(fit=True)
img = qr.make_image()
img = img.convert("RGBA")
icon = Image.open(logoImg)
img_w,img_h = img.size
size_w = int(img_w / factor)
size_h = int(img_h / factor)
icon_w,icon_h = icon.size
if icon_w >size_w:
icon_w = size_w
if icon_h > size_h:
icon_h = size_h
icon = icon.resize((icon_w,icon_h),Image.ANTIALIAS)
w = int((img_w - icon_w)/2)
h = int((img_h - icon_h)/2)
icon = icon.convert("RGBA")
img.paste(icon,(w,h),icon)
img.save(qrcodeFile)
if __name__ == '__main__':
logoImg = os.path.join(os.getcwd(), 'dir', 'inner2.jpg')
qrcodeFile = os.path.join(os.getcwd(), 'dir', 'qr3.png')
data = "https://www.baidu.com"
factor = 2
makeQrcode(logoImg, qrcodeFile, data, factor)
示例3生成的二维码: