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

在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-17import 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")                                                                                                                                           #添加logoicon = Image.open("1233.png")#获取图片的宽高img_w, img_h = img.sizefactor = 6 size_w = int(img_w / factor)size_h = int(img_h / factor)#获取logo的宽高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)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 imgif __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那行代码注释掉。

 

更多相关:

  • 方法一:通过app.json配置底部菜单(常用)  小程序根目录下的 app.json 文件用来对微信小程序进行全局配置。文件内容为一个 JSON 对象全局配置 | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/miniprogram/dev/reference/configu...

  • 我觉得你的时间安排得很慢。也许你的安装出了问题?在我试过这个测试程序:#!/usr/bin/python3import sysimport numpy as npimport cv2from PIL import Imagefrom profilehooks import profile@profiledef try_numpy(im...

  • 6.方法测试 在这个部分我们要整体的测试我们的程序,对前面的知识和内容有一个整体的应用和概括。 这是Udacity提供的相应资料,在code文件夹中有一个Rover_Project_Test_Notebook.ipynb文件,提供了输出视频的笔记本文件。 由于个人喜好的原因,我选择了pycharm2019来运行此程序。 (1)...

  • /*默认加载图片*/ .class-name { /*背景图片*/background: url(../../img/banner/banner-default.jpg) no-repeat center bottom;width: 100%;height: 861px; } .class-name:after { /*默认加载背景图...

  • 函数中的代码是部分代码,详细代码在最后 1 cv2.boundingRect 作用:矩形边框(boundingRect),用于计算图像一系列点的外部矩形边界。 cv2.boundingRect(array) -> retval 参数: array - 灰度图像(gray-scale image)或 2D点集( 2D point s...

  • 首先贴上代码原作者的github:https://github.com/chenyuntc/simple-faster-rcnn-pytorch(非代码作者,博文只解释代码) 今天看完了simple-faster-rcnn-pytorch-master代码的最后一个train.py文件,是时候认真的总结一下了,我打算一共总结四篇博客用...

  • 1. 定义网络的基本参数 定义输入网络的是什么: input = Input(shape=(240, 640, 3)) 反向传播时梯度下降算法 SGD一定会收敛,但是速度慢 Adam速度快但是可能不收敛 [link](https://blog.csdn.net/wydbyxr/article/details/84822806...

  • size_t和int       size_t是一些C/C++标准在stddef.h中定义的。这个类型足以用来表示对象的大小。size_t的真实类型与操作系统有关。 在32位架构中被普遍定义为: typedef   unsigned int size_t; 而在64位架构中被定义为: typedef  unsigned lo...

  • 我在 https://blog.csdn.net/wowricky/article/details/83218126 介绍了一种内存池,它的实现类似于linux 中打开slub_debug (1. make menuconfig: Kenel hacking -> Memory Debugging, 2. comand line中传入...

  • 项目开发中需要从引擎 获取一定范围的数据大小,用作打点上报,测试过程中竟然发现写入了一部分数据之后通过GetApproximateSizes 获取写入的key的范围时取出来的数据大小竟然为0。。。难道发现了一个bug?(欣喜) 因为写入的数据是小于一个sst的data-block(默认是4K),会不会因为GetApproximate...