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的Flask框架中web表单的教程
Apr 20 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
python进阶_浅谈面向对象进阶
Aug 17 Python
python实现拓扑排序的基本教程
Mar 11 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 Python
pandas重新生成索引的方法
Nov 06 Python
python 多线程对post请求服务器测试并发的方法
Jun 13 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
python中pip的使用和修改下载源的方法
Jul 08 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
django跳转页面传参的实现
Sep 17 Python
python通过函数名调用函数的几种场景
Sep 23 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 xml文件操作代码(一)
2009/03/20 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
Javascript读取cookie函数代码
2010/10/16 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
使用vue的transition完成滑动过渡的示例代码
2018/06/25 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
利用python画一颗心的方法示例
2017/01/31 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
深入分析python 排序
2020/08/24 Python
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
怎样声明子类
2013/07/02 面试题
九年级历史教学反思
2014/01/27 职场文书
员工薪酬激励方案
2014/06/13 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python