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 字典(Dictionary)操作详解
Mar 11 Python
Python自动化构建工具scons使用入门笔记
Mar 10 Python
python查看FTP是否能连接成功的方法
Jul 30 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
详解python while 函数及while和for的区别
Sep 07 Python
python抓取网页内容并进行语音播报的方法
Dec 24 Python
详解python读取和输出到txt
Mar 29 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
tensorflow 分类损失函数使用小记
Feb 18 Python
Python偏函数实现原理及应用
Nov 20 Python
Python进程池与进程锁之语法学习
Apr 11 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之require/include顺序 推荐
2011/01/02 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
用javascript控制iframe滚动的代码
2007/04/10 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
Node学习记录之cluster模块
2017/05/31 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
[01:33:59]真人秀《加油 DOTA》 第六期
2014/09/09 DOTA
Python实现 版本号对比功能的实例代码
2019/04/18 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
html5中使用hotcss.js实现手机端自适配的方法
2020/04/23 HTML / CSS
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
理工学院学生自我鉴定
2014/02/23 职场文书
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
2014机关干部学习“焦裕禄精神”思想汇报
2014/09/19 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
世界环境日活动总结
2015/02/11 职场文书
英语教学课后反思
2016/02/15 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
索尼ICF-36收音机评测
2022/04/30 无线电