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警察与小偷的实现之一客户端与服务端通信实例
Oct 09 Python
python实现解数独程序代码
Apr 12 Python
mac安装pytorch及系统的numpy更新方法
Jul 26 Python
python中metaclass原理与用法详解
Jun 25 Python
对django views中 request, response的常用操作详解
Jul 17 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
Python使用进程Process模块管理资源
Mar 05 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
Python调用飞书发送消息的示例
Nov 10 Python
详解Scrapy Redis入门实战
Nov 18 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
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
Linux操作面试题
2015/02/11 面试题
机电专业毕业生推荐信
2013/11/10 职场文书
销售总监岗位职责
2014/01/04 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
一句话工作感言
2014/03/01 职场文书
环保志愿者活动总结
2014/06/27 职场文书
大学专科求职信
2014/07/02 职场文书
2014年导购员工作总结
2014/11/18 职场文书
幼儿园感谢信
2015/01/21 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js