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

 更新时间:2014年12月16日 10:49:52   投稿:junjie  
这篇文章主要介绍了Python二维码生成库qrcode安装和使用示例,本文讲解了qrcode的安装、生成二维码、生成带图标的二维码等内容,需要的朋友可以参考下

二维码简称 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://jb51.net/")
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:

生成带有图标的二维码

二维码的容错系数(上面所指的 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://jb51.net/")
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")

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

http://tools.jb51.net/transcoding/jb51qrcode

相关文章

  • 详解python的ORM中Pony用法

    详解python的ORM中Pony用法

    本篇文章给大家详细介绍了python的ORM中Pony用法以及详细代码分享,对此有需要的朋友测试参考下。
    2018-02-02
  • python将数据插入数据库的代码分享

    python将数据插入数据库的代码分享

    在本篇文章里小编给大家整理的是关于python将数据插入数据库的代码内容,有兴趣的朋友们可以参考下。
    2020-08-08
  • Python 虚拟机字典dict内存优化方法解析

    Python 虚拟机字典dict内存优化方法解析

    这篇文章主要为大家介绍了Python 虚拟机字典dict内存优化方法解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 详解java调用python的几种用法(看这篇就够了)

    详解java调用python的几种用法(看这篇就够了)

    这篇文章主要介绍了详解java调用python的几种用法(看这篇就够了),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 详解Python中的分组函数groupby和itertools)

    详解Python中的分组函数groupby和itertools)

    这篇文章主要介绍了Python中的分组函数groupby和itertools)的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-07-07
  • jupyter如何安装自动代码补全提示

    jupyter如何安装自动代码补全提示

    这篇文章主要介绍了jupyter如何安装自动代码补全提示问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python实现Microsoft Office自动化的几种方式及对比详解

    Python实现Microsoft Office自动化的几种方式及对比详解

    办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用,进而提高生产率,实现辅助决策的目的,所以本文给大家介绍了Python实现Microsoft Office自动化的几种方式,需要的朋友可以参考下
    2025-03-03
  • python格式化输出保留2位小数的实现方法

    python格式化输出保留2位小数的实现方法

    这篇文章主要介绍了python格式化输出保留2位小数的实现方法,需要的朋友可以参考下
    2019-07-07
  • Pyspider进行API接口抓取和数据采集的实现

    Pyspider进行API接口抓取和数据采集的实现

    Pyspider是一个基于Python的强大的网络爬虫框架,它提供了丰富的功能和灵活的扩展性,使我们可以轻松地进行数据的抓取和处理,本文主要介绍了Pyspider进行API接口抓取和数据采集的实现,感兴趣的可以了解一下
    2023-09-09
  • Python实现B站UP主自动监控功能详解

    Python实现B站UP主自动监控功能详解

    众所周知,B站有很多有趣的UP主,可以教大家一些"实用"的知识,但是他们一般都没有固定的更新时间。因此,本文将用Python编写一个脚本,自动监控UP是否更新了视频,感兴趣的可以了解一下
    2022-03-03

最新评论