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 相关文章推荐
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 Python
Python正则表达式匹配HTML页面编码
Apr 08 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
Python实现读取txt文件并转换为excel的方法示例
May 17 Python
python列表,字典,元组简单用法示例
Jul 11 Python
详解PyTorch中Tensor的高阶操作
Aug 18 Python
基于python的列表list和集合set操作
Nov 24 Python
Python while true实现爬虫定时任务
Jun 08 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 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网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
PHP的全局错误处理详解
2016/04/25 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
URL中“#” “?” &“”号的作用浅析
2017/02/04 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
vue高德地图之玩转周边
2017/06/16 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
python输出指定月份日历的方法
2015/04/23 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
python3.5绘制随机漫步图
2018/08/27 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
校本教研工作方案
2014/01/14 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
授权委托书(完整版)
2014/09/10 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
二手车转让协议书
2015/01/29 职场文书
个人年终总结开头
2015/03/06 职场文书
2016党校培训心得体会
2016/01/07 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书