Python⼆维码⽣成库qrcode安装和使⽤⽰例
⼆维码简称(Quick Response Code),学名为快速响应矩阵码,是⼆维条码的⼀种,由⽇本的公司于 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
在上发现是 Mac 下所依赖的链接变更问题,解决如下:
复制代码代码如下:
ln -s /usr/local/include/freetype2 /usr/local/include/freetype
sudo easy_install -U pil
安装库:
复制代码代码如下:
sudo easy_install qrcode
成功安装后,即可以在终端⾥使⽤ qr 命令⽣成⼆维码了:
复制代码代码如下:
qr "Just a test" > test.png
qr --help
⽰例代码
复制代码代码如下:
import qrcode
qr = qrcode.QRCode(
version=2,
error_stants.ERROR_CORRECT_L,
box_size=10,python官方文档中文版
border=1
)
qr.add_data("jb51/")
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_stants.ERROR_CORRECT_H,
box_size=10,
border=1
)
qr.add_data("jb51/")
qr.make(fit=True)
img = qr.make_image()
img = vert("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 = size((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:本站还提供了⼀个功能⾮常强⼤的⼆维码⽣成⼯具,感兴趣的朋友可以参考⼀下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。