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实现一个简单的能够发送带附件的邮件程序的教程
Apr 08 Python
在Python中操作列表之list.extend()方法的使用
May 20 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
python实现周期方波信号频谱图
Jul 21 Python
python将txt文档每行内容循环插入数据库的方法
Dec 28 Python
python每天定时运行某程序代码
Aug 16 Python
python 实现多线程下载视频的代码
Nov 15 Python
python pygame实现球球大作战
Nov 25 Python
python有序查找算法 二分法实例解析
Feb 18 Python
python使用自定义钉钉机器人的示例代码
Jun 24 Python
python接口自动化框架实战
Dec 23 Python
python某漫画app逆向
Mar 31 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 5.0创建图形的巧妙方法
2010/10/12 PHP
PHP中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
javascript常用的设计模式
2017/02/09 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
python 垃圾收集机制的实例详解
2017/08/20 Python
使用Flask集成bootstrap的方法
2018/07/24 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
Python高并发和多线程有什么关系
2020/11/14 Python
建筑实习自我鉴定
2013/10/18 职场文书
机电专业毕业生求职信
2013/10/27 职场文书
体育专业个人求职信范文
2013/12/27 职场文书
采购主管岗位职责
2014/02/01 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
师范生见习报告范文
2014/11/03 职场文书
预备党员转正材料
2014/12/19 职场文书
大学生求职自荐信
2015/03/24 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技