Python 二维码制作
先介绍python 二维码制作的第三方库
QRCode 、MyQR
QRCode 生成这个二维码只用三行
importqrcode
img= qrcode.make('hello qrcode !')
img.save('test.png')
安装导入QRCode
pip install qrcode
QRCode 多种自定义方法
mport qrcode
text= input("输入文字或URL:") #设置URL必须添加http://
img =qrcode.make(text)
img.save()#保存图片至本地目录,可以设定路径
img.show()
生成添加logo的二维码
defgetQRcode(strs, name):
qr=qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=2,
)#添加数据
qr.add_data(strs)#填充数据
qr.make(fit=True)#生成图片
img = qr.make_image(fill_color="blue", back_color="white")
img= img.convert("RGBA") #RGBA
#添加logo
icon = Image.open("321.png")#获取图片的宽高
img_w, img_h =img.size
factor= 6size_w= int(img_w /factor)
size_h= int(img_h /factor)
icon_w, icon_h=icon.sizeif icon_w >size_w:
icon_w=size_wif icon_h >size_h:
icon_h=size_h#重新设置logo的尺寸
icon =icon.resize((icon_w, icon_h), Image.ANTIALIAS)print(icon)
w= int((img_w - icon_w) / 2)
h= int((img_h - icon_h) / 2)
img.paste(icon, (w, h), icon)#显示图片
plt.imshow(img)
plt.show()
img.save(name)returnimgif __name__ == '__main__':
getQRcode("https://music.163.com/song?id=36990266&userid=112961323", '01.png')
执行代码 程序报错
Traceback (most recent call last):
File"/Users/yyj/HelloBike/Bi_Test/demo/py_qrcode.py", line 96, in getQRcode("https://music.163.com/song?id=36990266&userid=112961323", '01.png')
File"/Users/yyj/HelloBike/Bi_Test/demo/py_qrcode.py", line 80, ingetQRcode
img.paste(icon, (w, h), icon)
File"/Users/yyj/anaconda3/envs/Adil/lib/python3.7/site-packages/PIL/Image.py", line 1470, inpaste
self.im.paste(im, box, mask.im)
ValueError: bad transparency mask
问题分析:
#添加logo
icon = Image.open("321.png")
因为我使用的图片格式 第一次使用了 jpg 后来我自己修改后缀为321.png导致,使用真正的png 图即可。
原图如右
结果如右
MyQR 生成动态二维码
defgakki_code():
version, level, qr_name=myqr.run(
words="http://labfile.oss.aliyuncs.com/courses/1126/Sources.zip", #可以是字符串,也可以是网址(前面要加http(s)://)
version=1, #设置容错率为最高
level='H', #控制纠错水平,范围是L、M、Q、H,从左到右依次升高
picture="gakki.gif", #将二维码和图片合成
colorized=True, #彩色二维码
contrast=1.0, #用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0
brightness=1.0, #用来调节图片的亮度,其余用法和取值同上
save_name="gakki_code.gif", #保存文件的名字,格式可以是jpg,png,bmp,gif
save_dir=os.getcwd() #控制位置
)
下面我们来详细的讲解一下 myqr.run() 函数里面的参数