版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tao_627/article/details/85054879
安装依赖库
详细的使用python模块qrcode库的博文,参见
https://blog.csdn.net/tao_627/article/details/85053884
下面的例子需要使用qrcode,pillow,matplotlib和python-tk库,安装如下
sudo pip install qrcode
sudo pip install pillow
sudo pip install matplotlib
sudo apt-get install python-tk
代码如下
#!/usr/bin/env python
#encoding: utf-8
#description: 生成二维码,中间带logo
#date: 2018-12-17
import qrcode
from PIL import Image
import matplotlib.pyplot as plt
def getORCode(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("CMYK")
#添加logo
icon = Image.open("1233.png")
#获取图片的宽高
img_w, img_h = img.size
factor = 6
size_w = int(img_w / factor)
size_h = int(img_h / factor)
#获取logo的宽高
icon_w, icon_h = icon.size
if icon_w > size_w:
icon_w = size_w
if icon_h > size_h:
icon_h = size_h
#重新设置logo的尺寸
icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
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)
return img
if __name__ == '__main__':
getORCode('https://music.163.com/song?id=36990266&userid=112961323', '03.png')
print('execute......')
执行下面的命令
python qrcode_demo3.py
然后会弹出一个新窗口,显示蓝色的二维码图,使用微信扫描,会自动跳转到网易云音乐的一个播放页面,开始播放歌曲。
效果如下
遇到的坑记录如下
1.缺python-tk包
解决方法:sudo apt-get install python-tk
2.img.paste()函数报错
self.im.paste(im, box, mask.im)
ValueError: bad transparency mask
发现网上这篇文章
https://blog.csdn.net/dugudaibo/article/details/78894565
有启发,将原来的logo文件由jpeg格式替换为png格式的图片,就可以了。
3.无法保存二维码图片
IOError: cannot write mode CMYK as PNG
将CMYK那行代码注释掉。