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读写文件操作示例程序
Dec 02 Python
python中bisect模块用法实例
Sep 25 Python
python模块之re正则表达式详解
Feb 03 Python
Python实现树的先序、中序、后序排序算法示例
Jun 23 Python
Python 3中print函数的使用方法总结
Aug 08 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
Nov 29 Python
Tensorflow分类器项目自定义数据读入的实现
Feb 05 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
python网络编程之五子棋游戏
May 14 Python
Python读写csv文件流程及异常解决
Oct 20 Python
Django怎么在admin后台注册数据库表
Nov 14 Python
高考要来啦!用Python爬取历年高考数据并分析
Jun 03 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中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
AngularJS实现tab选项卡的方法详解
2017/07/05 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
Python用threading实现多线程详解
2017/02/03 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
Python登录系统界面实现详解
2019/06/25 Python
python中的时区问题
2021/01/14 Python
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
中国宠物用品商城:E宠商城
2016/08/27 全球购物
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
动物科学专业求职信
2014/07/27 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书