一、官方文档
https://pypi.org/project/qrcode/
https://pypi.org/project/MyQR/
二、下载包
pip install qrcode #方法多,体量小
pip install myqr #操作简单,功能强大
三、代码
qrcode一行字二维码
import qrcode
qrcode.make("不睡觉干嘛呢").get_image().show() #设置URL必须添加http://
qrcode一行字二维码
import qrcode
text = input("输入文字或URL:")
img =qrcode.make(text)
img.save() #保存图片至本地目录,可以设定路径
img.show()
qrcode生成logo二维码
from PIL import Image
import qrcode,os
def create_qrcode(url,qrcodename):
qr = qrcode.QRCode(
version=1, # 设置容错率为最高
error_correction=qrcode.ERROR_CORRECT_H, # 用于控制二维码的错误纠正程度
box_size=8, # 控制二维码中每个格子的像素数,默认为10
border=1, # 二维码四周留白,包含的格子数,默认为4
#image_factory=None, 保存在模块根目录的image文件夹下
#mask_pattern=None
)
qr.add_data(url) # QRCode.add_data(data)函数添加数据
qr.make(fit=True) # QRCode.make(fit=True)函数生成图片
img = qr.make_image()
img = img.convert("RGBA") # 二维码设为彩色
logo = Image.open('xx.jpg') # 传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)
myqr动态二维码
相关参数:
words:二维码内容,链接或者句子
version:二维码大小,范围为[1,40]
level:二维码纠错级别,范围为{L,M,Q,H},H为最高级,默认。
picture:自定义二维码背景图,支持格式为 .jpg,.png,.bmp,.gif,默认为黑白色
colorized:二维码背景颜色,默认为 False,即黑白色
contrast:对比度,值越高对比度越高,默认为 1.0
brightness:亮度,值越高亮度越高,默认为 1.0,值常和对比度相同
save_name:二维码名称,默认为 qrcode.png
save_dir:二维码路径,默认为程序工作路径
# 调用库
from MyQR import myqr
# 函数部分
myqr.run(
# 网址
words='https://wztlink1013.com',
# 控制边长,范围是1到40,数字越大边长越大,默认边长是取决于你输入的信息的长度和使用的纠错等级
version=5,
# 控制纠错水平,范围是L、M、Q、H,从左到右依次升高
level='H',
# 将QR二维码图像与一张同目录下的图片相结合,此处设置该图片,可以是gif
picture='./input/girl.gif',
# 默认是黑白(False),可以选择彩色(True)
colorized=True,
# 调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0。
contrast=1.0,
# 调节图片的亮度,用法与contrast相同
brightness=1.0,
# 输出文件名,格式可以是jpg,png,bmp,gif
save_name='girl.gif',
save_dir='./output')