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缩进区别分析
Feb 15 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
Jun 13 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
Django之模型层多表操作的实现
Jan 08 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
Python实现打砖块小游戏代码实例
May 18 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
python实现FTP循环上传文件
Mar 20 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
python 制作网站筛选工具(附源码)
Jan 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
老照片 - 几十年前的收音机与人
2021/03/02 无线电
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
pageGroup.js实现分页功能
2019/07/27 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
python requests 使用快速入门
2017/08/31 Python
TensorFlow变量管理详解
2018/03/10 Python
Python交互式图形编程的实现
2019/07/25 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
英语自我评价范文
2014/01/24 职场文书
房产转让协议书
2014/04/11 职场文书
《开国大典》教学反思
2014/04/19 职场文书
关于建议书的格式范文
2014/05/20 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
小学教代会开幕词
2016/03/04 职场文书
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server