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 正则表达式 概述及常用字符
May 04 Python
python 实现插入排序算法
Jun 05 Python
Python2随机数列生成器简单实例
Sep 04 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
Python中交换两个元素的实现方法
Jun 29 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 Python
Pytorch Tensor基本数学运算详解
Dec 30 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
python数据爬下来保存的位置
Feb 17 Python
浅谈PyTorch中in-place operation的含义
Jun 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
用Zend Encode编写开发PHP程序
2006/10/09 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
python实现的重启关机程序实例
2014/08/21 Python
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
Python科学画图代码分享
2017/11/29 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
tensorflow的计算图总结
2020/01/12 Python
python如何实现单链表的反转
2020/02/10 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
T3官网:头发造型工具
2019/12/26 全球购物
WSDL的操作类型主要有几种
2013/07/19 面试题
实习期自我鉴定
2013/10/11 职场文书
上课睡觉检讨书
2014/01/28 职场文书
工作说明书格式
2014/07/29 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
转让协议书
2015/01/27 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers