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通过ElementTree操作XML获取结点读取属性美化XML
Dec 02 Python
使用Python实现一个简单的项目监控
Mar 31 Python
用Python的SimPy库简化复杂的编程模型的介绍
Apr 13 Python
python安装oracle扩展及数据库连接方法
Feb 21 Python
Python中函数及默认参数的定义与调用操作实例分析
Jul 25 Python
浅谈python数据类型及类型转换
Dec 18 Python
python3+PyQt5实现拖放功能
Apr 24 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
Python设计模式之桥接模式原理与用法实例分析
Jan 10 Python
python实践项目之监控当前联网状态详情
May 23 Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 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
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
Javascript实现的分页函数
2006/12/22 Javascript
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
使用js画图之画切线
2015/01/12 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
three.js 入门案例详解
2018/01/23 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
详解python中的json和字典dict
2018/06/22 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
一套英文Java笔试题面试题
2016/04/21 面试题
UNIX命令速查表
2012/03/10 面试题
造价工程师个人求职信
2013/09/21 职场文书
建筑自我鉴定
2013/10/19 职场文书
应届毕业生求职信范文
2013/12/18 职场文书
高一物理教学反思
2014/01/24 职场文书
优秀公益广告词大全
2014/03/19 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
2016秋季小学开学寄语
2015/12/03 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers