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 相关文章推荐
linux环境下安装pyramid和新建项目的步骤
Nov 27 Python
Python中的exec、eval使用实例
Sep 23 Python
使用Python解析JSON数据的基本方法
Oct 15 Python
利用python实现简单的循环购物车功能示例代码
Jul 05 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
May 11 Python
Tensorflow加载预训练模型和保存模型的实例
Jul 27 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
django框架使用方法详解
Jul 18 Python
Django REST framework 单元测试实例解析
Nov 07 Python
python tkinter之顶层菜单、弹出菜单实例
Mar 04 Python
Python基于mediainfo批量重命名图片文件
Dec 29 Python
python中的列表和元组区别分析
Dec 30 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
DSP接收机前端设想
2021/03/02 无线电
自定义php类(查找/修改)xml文档
2013/03/26 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
jquery 注意事项与常用语法小结
2010/06/07 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
Vue配置marked链接添加target="_blank"的方法
2019/07/19 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
python远程邮件控制电脑升级版
2019/05/23 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
同学会邀请书大全
2014/01/12 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
限期整改通知书
2015/04/22 职场文书
赞助商致辞
2015/07/30 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书
导游词之上海豫园
2019/10/24 职场文书
python脚本框架webpy的url映射详解
2021/11/20 Python