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采用Django开发自己的博客系统
Sep 29 Python
Python 实现一个颜色色值转换的小工具
Dec 06 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
python3爬取各类天气信息
Feb 24 Python
python爬虫之自动登录与验证码识别
Jun 15 Python
使用 Python 遍历目录树的方法
Feb 29 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
Python基于Hypothesis测试库生成测试数据
Apr 29 Python
python函数中将变量名转换成字符串实例
May 11 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
python 实现单例模式的5种方法
Sep 23 Python
Python数据结构之队列详解
Mar 21 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
php die()与exit()的区别实例详解
2016/12/03 PHP
如何离线执行php任务
2017/02/21 PHP
设定php简写功能的方法
2019/11/28 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
jquery实现加载更多"转圈圈"效果(示例代码)
2020/11/09 jQuery
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
Django教程笔记之中间件middleware详解
2018/08/01 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
Python如何telnet到网络设备
2021/02/18 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
十佳班主任事迹材料
2014/01/18 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
教师求职自荐书
2014/06/14 职场文书
金融管理专业求职信
2014/07/10 职场文书
个人四风对照检查材料
2014/09/26 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
Python入门学习之类的相关知识总结
2021/05/25 Python
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
python区块链持久化和命令行接口实现简版
2022/05/25 Python