如何使用Python生成二维码

2018年5月12日12:59:02 发表评论 58

二维码在当今社会是一个很常见的功能,如何使用 Python 来生成二维码呢?这里我们借助 qrcode 工具来生成我们需要的二维码。

安装工具

通过 pip 命令来安装 qrcode。

pip install qrcode[pil]

生成普通二维码

可以使用 make 方法快速生成一个二维码,比如说,我想要将 脑洞大开 的网站地址转为二维码,可以如下生成:

import qrcode
img = qrcode.make("http://www.naodongopen.com/")
# 展示生成的二维码
img.show()

如果想要控制更多参数,可以使用以下高级用法。

import qrcode
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data("http://www.naodongopen.com/")
qr.make(fit=True)

# 设置填充所用的颜色以及背景色
img = qr.make_image(fill_color="green", back_color="white")
# 展示生成的二维码
img.show()

来解释下参数:

  • version:值为1~40的整数,控制二维码的大小(最小值是1,是个21×21的矩阵)。 如果想让程序自动确定,将值设置为 None 并使用 fit 参数即可。
  • error_correction:控制二维码的错误纠正功能。可取值下列4个常量,数值越高表示容错性更好:
    • ERROR_CORRECT_L 大约7%或更少的错误能被纠正
    • ERROR_CORRECT_M (默认)大约15%或更少的错误能被纠正
    • ERROR_CORRECT_Q 大约25%或更少的错误能被纠正
    • ERROR_CORRECT_H.大约30%或更少的错误能被纠正
  • box_size:控制二维码中每个小格子包含的像素数。
  • border:控制边框(二维码与图片边界的距离)包含的格子数(默认为4,是相关标准规定的最小值)

生成带图标的二维码

有时候我们想要将生成的二维码中间附上图标,这时我们只需要借助 Pillow 就可以完成,没有的话首先安装它。

pip install Pillow

安装完成后,来看下如何在二维码中添加图标。

import qrcode
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data("http://www.naodongopen.com/")
qr.make(fit=True)

# 设置填充所用的颜色以及背景色
img = qr.make_image(fill_color="green", back_color="white")

from PIL import Image

# 读取需要添加的图标
icon =Image.open("robot.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.show()

# 保存生成的二维码
img.save("qrcode.png")

需要注意的是:由于生成的二维码是png格式,所以读入的图标也需要是png格式文件,如果是其他格式(例如jpg),会报错以下错误。

ValueError: bad transparency mask

可以看到,想要将生成的二维码保存也只需要调用 img.save("qrcode.png") 即可。

更多关于 Python 生成二维码的的方式请查看:
如何使用Python生成艺术二维码

  • 个人微信号
  • 添加时请备注“脑洞大开读者”
  • weinxin
  • 微信公众号
  • 关注会有更多精彩内容!
  • weinxin

发表评论

您必须登录才能发表评论!