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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
Python利用多进程将大量数据放入有限内存的教程
Apr 01 Python
Python使用struct处理二进制的实例详解
Sep 11 Python
对pandas replace函数的使用方法小结
May 18 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
Python使用字典的嵌套功能详解
Feb 27 Python
简单了解Python3里的一些新特性
Jul 13 Python
python应用文件读取与登录注册功能
Sep 23 Python
python实现输入任意一个大写字母生成金字塔的示例
Oct 27 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 Python
Python类型转换的魔术方法详解
Dec 23 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扩展图文教程
2008/12/12 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
HTML的select控件美化
2017/03/27 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
python基础教程之Hello World!
2014/08/29 Python
初步探究Python程序的执行原理
2015/04/11 Python
Django的信号机制详解
2017/05/05 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
python七夕浪漫表白源码
2019/04/05 Python
django最快程序开发流程详解
2019/07/19 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
python datetime处理时间小结
2020/04/16 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
如何将字串String转换成整数int
2015/02/21 面试题
生产现场工艺工程师岗位职责
2013/11/28 职场文书
新农村建设典型材料
2014/05/31 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
工程服务质量承诺书
2015/04/29 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server