前言
Python中有生成二维码的库,使用的最多的是qrcode
实现
基础
使用函数
qrcode.make()
生成图像。
.save(‘xx.jpg’)
函数保存生成的图像。
设置二维码颜色大小参数
首先创建QRcode对象
qr = qrcode.QRcode(version = , error_correction=qrcode.constants.ERROR_CORRECT_L, box_size= , border=)
参数设置:
version: 1-40 控制QR码的大小,实际上是二维码的格子矩阵大小
最小是21×21,最大是177×177。
error_correction: 二维码错误容许率,默认是M,容许小于15%的错误率
L: 小于7%
Q: 小于25%
H: 小于30%
box_size: 每个小格子包含的像素数量,一般设为10
border: 二维码到图片边框的小格子数,默认值为4
实例化二维码生成类
import qrcode
qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CPRRECT_L,box_size=10,border=4,)
#设置数据
data = ""
qr.add_data(data=data)
#启用颜色设置
qr.make(fit=True)
img = qr.make_image(fill_color="green",back_color="white")
#生成保存图片
img.save('uestc.jpg')
#显示
img.show()
嵌入logo
需要对要嵌入的图片进行处理,调整尺寸使其符合所需大小,然后通过paste方法将其粘贴到二维码的中心位置
from PIL import Image
import qrcode, os
url = '电子科技大学'
qrcodename = 'logoqrcode'
# def create_qrcode(url, qrcodename):
qr=qrcode.QRCode (version=1, error_correction=qrcode.ERROR_CORRECT_H, box_size=8, border=1,)
qr.add_data(url)
qr.make(fit=True)
img = qr.make_image()
img = img.convert("RGBA") # 二维码设为彩色
logo = Image.open('logo.png') # 传 gif 生成的二维码也是没有动态效果的
w , h = img.size
logo_w , logo_h = logo.size
factor = 4 # 默认 logo 最大设为图片的四分之一
s_w = int(w / factor)
s_h = int(h / factor)
if logo_w > s_w or logo_h > s_h:
logo_w = s_w
logo_h = s_h
logo = logo.resize((logo_w, logo_h), Image.ANTIALIAS)
l_w = int((w - logo_w) / 2)
l_h = int((h - logo_h) / 2)
logo = logo.convert("RGBA")
img.paste(logo, (l_w, l_h), logo)
img.show()
img.save(os.getcwd()+'/' + qrcodename + '.png', quality=100)
输出结果:
参考文献
[1] 管小卫.基于Python 的二维码生成与识别[J].科学技术创新,2020,(25): 99-100