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两种遍历字典(dict)的方法比较
May 29 Python
python实现提取百度搜索结果的方法
May 19 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
Apr 02 Python
Python实现简单http服务器
Apr 12 Python
python简单区块链模拟详解
Jul 03 Python
Python 中的 import 机制之实现远程导入模块
Oct 29 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
Python 解码Base64 得到码流格式文本实例
Jan 09 Python
Python日志logging模块功能与用法详解
Apr 09 Python
基于python生成英文版词云图代码实例
May 16 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
python中format函数如何使用
Jun 22 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
ADODB类使用
2006/11/25 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
PHP7 list() 函数修改
2021/03/09 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
vue中appear的用法
2017/08/17 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
在Python中使用Mako模版库的简单教程
2015/04/08 Python
python使用wxpython开发简单记事本的方法
2015/05/20 Python
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
python3爬虫怎样构建请求header
2018/12/23 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
什么是Assembly(程序集)
2014/09/14 面试题
在职证明格式样本
2015/06/15 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL