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 相关文章推荐
Tornado Web服务器多进程启动的2个方法
Aug 04 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
python 链接和操作 memcache方法
Mar 04 Python
Python 异常处理的实例详解
Sep 11 Python
你真的了解Python的random模块吗?
Dec 12 Python
python邮件发送smtplib使用详解
Jun 16 Python
Python中判断输入是否为数字的实现代码
May 26 Python
解决python opencv无法显示图片的问题
Oct 28 Python
Python 使用 prettytable 库打印表格美化输出功能
Dec 26 Python
np.dot()函数的用法详解
Jan 17 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 Python
如何在Python中妥善使用进度条详解
Apr 05 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中使用临时表查询数据的一个例子
2013/02/03 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
理解javascript对象继承
2016/04/17 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python实现二叉搜索树
2016/02/03 Python
Python引用模块和查找模块路径
2016/03/17 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
Django 框架模型操作入门教程
2019/11/05 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
网络教育自我鉴定
2013/11/01 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
公司保洁员管理制度
2015/08/04 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
Go语言测试库testify使用学习
2022/07/23 Golang