Python二维码生成库qrcode安装和使用示例


Posted in Python onDecember 16, 2014

二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave 公司于 1994 年发明。现随着智能手机的普及,已广泛应用于平常生活中,例如商品信息查询、社交好友互动、网络地址访问等等。

安装 Python 的二维码库 -- qrcode

由于生成 qrcode 图片需要依赖 Python 的图像库,所以需要先安装 Python 图像库 PIL(Python Imaging Library),不然会遇到 "ImportError: No module named Image" 的错误:

sudo easy_install pil

如果安装 pil 时出现以下错误:

_imagingft.c:73:10: fatal error: 'freetype/fterrors.h' file not found

#include <freetype/fterrors.h>

         ^

1 error generated.

error: Setup script exited with error: command 'cc' failed with exit status 1

在 StackOverflow 上发现是 Mac 下所依赖的 FreeType 链接变更问题,解决如下:

ln -s /usr/local/include/freetype2 /usr/local/include/freetype

sudo easy_install -U pil

安装 qrcode 库:

sudo easy_install qrcode

成功安装后,即可以在终端里使用 qr 命令生成二维码了:

qr "Just a test" > test.png

qr --help

示例代码

import qrcode

 

 

qr = qrcode.QRCode(

    version=2,

    error_correction=qrcode.constants.ERROR_CORRECT_L,

    box_size=10,

    border=1

)

qr.add_data("http://3water.com/")

qr.make(fit=True)

img = qr.make_image()

img.save("dhqme_qrcode.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)。

运行上面代码会生成敝站的一个 QR Code:

Python二维码生成库qrcode安装和使用示例

生成带有图标的二维码

二维码的容错系数(上面所指的 error_correction)越高,生成的二维码则可允许的残缺率越大,且二维码的数据主要保存在图片的四个角上,所以在二维码中间放一个小图标,对二维码的识别也是不受多大影响的。

对于插入在二维码上的图标大小,这里指定限制图标的大小尺寸最大是二维码长宽的 1/4,以免残缺太大,影响识别。

最后结合 Python 图像库(PIL)的操作,把图片黏贴(paste)在二维码图片的中间,便可以生成一个带有图标的二维码,具体操作代码如下:

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二维码生成库qrcode安装和使用示例

PS:本站还提供了一个功能非常强大的二维码生成工具,感兴趣的朋友可以参考一下:

Python 相关文章推荐
Python类的基础入门知识
Nov 24 Python
python实现超简单端口转发的方法
Mar 13 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
python 实现在Excel末尾增加新行
May 02 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
Python concurrent.futures模块使用实例
Dec 24 Python
python enumerate内置函数用法总结
Jan 07 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
Selenium常见异常解析及解决方案示范
Apr 10 Python
python实时监控logstash日志代码
Apr 27 Python
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 #Python
Python 正则表达式(转义问题)
Dec 15 #Python
python正则表达式中的括号匹配问题
Dec 14 #Python
python的类方法和静态方法
Dec 13 #Python
Python计算程序运行时间的方法
Dec 13 #Python
Python编程中的反模式实例分析
Dec 08 #Python
Python实现拼接多张图片的方法
Dec 01 #Python
You might like
PHP Curl多线程原理实例详解
2013/11/06 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2015/12/10 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
写的htc的数据表格
2007/01/20 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
Python中字典和集合学习小结
2017/07/07 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
linux系统都有哪些运行级别
2012/04/15 面试题
大学教师年终总结的自我评价
2013/10/29 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
专题组织生活会方案
2014/06/15 职场文书
工作作风建设心得体会
2014/10/22 职场文书
2015年植树节活动总结
2015/02/06 职场文书
python如何在word中存储本地图片
2021/04/07 Python
python实现网络五子棋
2021/04/11 Python