0%

qrcode

前言

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()

需要对要嵌入的图片进行处理,调整尺寸使其符合所需大小,然后通过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