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逐行读取文件内容的三种方法
Jan 20 Python
python网页请求urllib2模块简单封装代码
Feb 07 Python
Python学习笔记之常用函数及说明
May 23 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
Feb 13 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
python中scikit-learn机器代码实例
Aug 05 Python
Python类的继承用法示例
Jan 31 Python
Python 日志logging模块用法简单示例
Oct 18 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
tensorboard显示空白的解决
Feb 15 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
python 邮件检测工具mmpi的使用
Jan 04 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读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
Python中关键字is与==的区别简述
2014/07/31 Python
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
python opencv调用笔记本摄像头
2019/08/28 Python
Python接口测试get请求过程详解
2020/02/28 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
虚拟机下载python是否需要联网
2020/07/27 Python
python合并多个excel文件的示例
2020/09/23 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
校运会广播稿100字
2014/01/27 职场文书
大学生创业计划书
2014/08/14 职场文书
防灾减灾活动总结
2014/08/30 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
加入学生会自荐书
2015/03/05 职场文书
卖车协议书范文
2016/03/23 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
python单元测试之pytest的使用
2021/06/07 Python