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 列表(List)操作方法详解
Mar 11 Python
python操作摄像头截图实现远程监控的例子
Mar 25 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Python面向对象之类的封装操作示例
Jun 08 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
python内置函数sorted()用法深入分析
Oct 08 Python
python3+opencv生成不规则黑白mask实例
Feb 19 Python
Python实现电视里的5毛特效实例代码详解
May 15 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 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面向对象编程快速入门
2006/12/14 PHP
php5.2时间相差8小时
2007/01/15 PHP
php生成二维码
2015/08/10 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
js判断节假日实例代码
2017/12/27 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
python内存管理机制原理详解
2019/08/12 Python
python 并发下载器实现方法示例
2019/11/22 Python
Python sorted对list和dict排序
2020/06/09 Python
python文件及目录操作代码汇总
2020/07/08 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
国际象棋商店:The Chess Store
2018/07/09 全球购物
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
会计系个人求职信范文分享
2013/12/20 职场文书
小学数学课后反思
2014/04/23 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
开场白怎么写
2015/06/01 职场文书
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技
Pandas 数据编码的十种方法
2022/04/20 Python