前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【极限操作】一行Python代码生成一个二维码

【极限操作】一行Python代码生成一个二维码

作者头像
abs_zero
发布2018-07-25 09:38:44
4440
发布2018-07-25 09:38:44
举报
文章被收录于专栏:AI派

推荐阅读时间:6min~8min 主题:Python生成二维码

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

安装工具

通过 pip 命令来安装 qrcode。

代码语言:javascript
复制
pip install qrcode[pil]

一行代码生成二维码

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

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

高级用法

除了可以使用make快速成成一个二维码之外,如果想要控制更多参数,可以使用以下高级用法。

代码语言:javascript
复制
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 就可以完成,没有的话首先安装它。

代码语言:javascript
复制
pip install Pillow

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

代码语言:javascript
复制
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")
代码语言:javascript
复制

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

代码语言:javascript
复制
ValueError: bad transparency mask

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI派 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装工具
  • 一行代码生成二维码
  • 高级用法
  • 生成带图标的二维码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档