python生成二维码的实例详解


Posted in Python onOctober 29, 2017

python生成二维码的实例详解

版本相关

操作系统:Mac OS X EI Caption

Python版本:2.7

IDE:Sublime Text 3

依赖库

Python生成二维码需要的依赖库为PIL和QRcode。

坑爹的是,百度了好久都没有找到PIL,不知道是什么时候改名了,还是其他原因,pillow就是传说中的PIL。

安装命令:sudo pip install pillow、sudo pip install qrcode

验证是否安装成功,使用命令from PIL import Image,就可以验证PIL是否安装成功,qrcode则使用import qrcode,两条命令不报错,就说明依赖的环境已经完毕了。

使用qrcode

qrcode使用起来也很简单,代码如下:

import qrcode


qr = qrcode.QRCode(
  version=7,
  error_correction=qrcode.constants.ERROR_CORRECT_L,
  box_size=10,
  border=4
)
qr.add_data("Hello")
qr.make(fit=True)
img = qr.make_image()
img.save("test.png")

参数 version 表示生成二维码的尺寸大小,取值范围是 1 至 40,最小尺寸 1 会生成 21 * 21 的二维码,version 每增加 1,生成的二维码就会添加 4 尺寸,例如 version 是 2,则生成 25 * 25 的二维码。

参数 error_correction 指定二维码的容错系数,分别有以下4个系数:

1.ERROR_CORRECT_L: 7%的字码可被容错
2.ERROR_CORRECT_M: 15%的字码可被容错
3.ERROR_CORRECT_Q: 25%的字码可被容错
4.ERROR_CORRECT_H: 30%的字码可被容错

参数 box_size 表示二维码里每个格子的像素大小。

参数 border 表示边框的格子厚度是多少(默认是4)。

运行代码后,会在代码的当前目录下生成一个test.png的二维码,用手机扫一下就可以看到Hello了。

带有logo的二维码

生成这个二维码的原理就是利用PIL库操作icon,把icon放到二维码的正中间。PIL操作没有去了解,就直接使用三水点靠木的代码来做事例。

import Image
import qrcode


qr = qrcode.QRCode(
  version=2,
  error_correction=qrcode.constants.ERROR_CORRECT_H,
  box_size=10,
  border=1
)
qr.add_data("http://3water.com/")
qr.make(fit=True)

img = qr.make_image()
img = img.convert("RGBA")

icon = Image.open("favicon.png")

img_w, img_h = img.size
factor = 4
size_w = int(img_w / factor)
size_h = int(img_h / factor)

icon_w, icon_h = icon.size
if icon_w > size_w:
  icon_w = size_w
if icon_h > size_h:
  icon_h = size_h
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)

img.save("dhqme_qrcode.png")

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python 实现自动远程登陆scp文件实例代码
Mar 13 Python
Python列表切片用法示例
Apr 19 Python
django中的HTML控件及参数传递方法
Mar 20 Python
python中pip的安装与使用教程
Aug 10 Python
python机器学习之神经网络实现
Oct 13 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
python实现截取屏幕保存文件,删除N天前截图的例子
Aug 27 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
django API 中接口的互相调用实例
Apr 01 Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 Python
python元组拆包实现方法
Feb 28 Python
PyQt5爬取12306车票信息程序的实现
May 14 Python
python 读写中文json的实例详解
Oct 29 #Python
Python3 处理JSON的实例详解
Oct 29 #Python
深入理解Python中的*重复运算符
Oct 28 #Python
13个最常用的Python深度学习库介绍
Oct 28 #Python
python探索之BaseHTTPServer-实现Web服务器介绍
Oct 28 #Python
Python探索之实现一个简单的HTTP服务器
Oct 28 #Python
Python探索之SocketServer详解
Oct 28 #Python
You might like
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
跟我学Laravel之路由
2014/10/15 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
一个基于jquery的文本框记数器
2012/09/19 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
JavaScript经典案例之简易计算器
2020/08/24 Javascript
python网络编程学习笔记(四):域名系统
2014/06/09 Python
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
Python 的 with 语句详解
2014/06/13 Python
使用Python生成url短链接的方法
2015/05/04 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
Python标准库itertools的使用方法
2020/01/17 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
this关键字的作用
2016/01/30 面试题
宿舍打麻将检讨书
2014/01/24 职场文书
《第一朵杏花》教学反思
2014/04/16 职场文书
保护环境建议书400字
2014/05/13 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
检讨书怎么写
2015/01/23 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
红色影片观后感
2015/06/18 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers