在ubuntu 16.04.5 LTS上使用Python 2.7生成带logo的二维码实战

安装依赖库

详细的使用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那行代码注释掉。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值