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 相关文章推荐
tornado捕获和处理404错误的方法
Feb 26 Python
使用Python装饰器在Django框架下去除冗余代码的教程
Apr 16 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
python三引号输出方法
Feb 27 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 Python
Django DRF路由与扩展功能的实现
Jun 03 Python
python爬虫数据保存到mongoDB的实例方法
Jul 28 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 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
基于PHPExcel的常用方法总结
2013/06/13 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
JS实现吸顶特效
2020/01/08 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
python ip正则式
2009/05/07 Python
Python break语句详解
2014/03/11 Python
Python入门篇之面向对象
2014/10/20 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
英国复古服装购物网站:Collectif
2019/10/30 全球购物
Java基础知识面试要点
2016/07/29 面试题
大学生实习感言
2014/01/16 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技