快速生成二维码——Python QRCode库详解

🍀 前言

博客地址:

👋 简介

QRCode码是由日本于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。QRCode模块是Github上的一个开源项目,提供了生成二维码的接口,QRCode默认使用PIL库用于生成图像。

📖 正文

1 QRCode安装

pip install qrcode -i https://pypi.tuna.tsinghua.edu.cn/simple

2 参数介绍

QRCode的参数

version整数,范围为1到40,表示二维码的大小(最小值是1,是个12×12的矩阵),如果想让程序自动生成,将值设置为 None 并使用 fit=True 参数即可。
error_correction二维码的纠错范围
ERROR_CORRECT_L 7%以下的错误会被纠正
ERROR_CORRECT_M 15%以下的错误会被纠正
ERROR_CORRECT_Q 25 %以下的错误会被纠正
ERROR_CORRECT_H 30%以下的错误会被纠正
box_size每个点(方块)中的像素个数
border二维码距图像外围边框距离,默认为4,而且相关规定最小为4

3 二维码生成

步骤:

  • 创建QRCode对象
  • add_data()添加要生成二维码的数据
  • make_image()创建二维码
  • 打开或者保存二维码图片
import qrcode

data = 'https://www.baidu.com/'
img_file = r'code.png'
# 实例化QRCode生成qr对象
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4
)
# 传入数据
qr.add_data(data)
qr.make(fit=True)
# 生成二维码
img = qr.make_image()
# 保存二维码
img.save(img_file)
# 展示二维码
img.show()

4 工具封装

4.1 生成普通二维码
import qrcode


def get_qr_code_image(source: str, data: str) -> None:
    """
    生成二维码
    :param source: 保存路径
    :param data: 数据
    :return:
    """
    if not os.path.exists(source):
        os.makedirs(source)
    qr = qrcode.QRCode(
        version=2,  # 尺寸
        error_correction=qrcode.constants.ERROR_CORRECT_H,  # 容错信息当前为 30% 容错
        box_size=10,  # 每个格子的像素大小
        border=4  # 边框格子宽度
    )  # 设置二维码的大小
    try:
        qr.add_data(data)
        # 生成二维码图片,fill_color二维码颜色,back_color二维码背景颜色
        img = qr.make_image(fill_color='green', back_color="white")
        # 用时间戳命名文件
        filename = str(time.time()).split('.')[0] + '.png'
        file = os.path.join(source, filename)
        img.save(file)
        print(f"二维码{filename}生成成功")
    except Exception as e:
        print(f"生成失败:{e}")


if __name__ == '__main__':
    source_path = r'code_img'
    data = 'https://blog.csdn.net/powerbiubiu'
    get_qr_code_image(source_path, data)

以下为生成的二维码图片
1705835116.png

4.2 生成带头像的二维码

加载logo图片需要用PIL库,所以需要安装
pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple

from PIL import Image
import qrcode

def get_qr_code_image_by_logo(source: str, data: str) -> None:
    """
    生成二维码
    :param source: 保存路径
    :param data: 数据
    :return:
    """
    if not os.path.exists(source):
        os.makedirs(source)
    qr = qrcode.QRCode(
        version=2,  # 尺寸
        error_correction=qrcode.constants.ERROR_CORRECT_H,  # 容错信息当前为 30% 容错
        box_size=10,  # 每个格子的像素大小
        border=4  # 边框格子宽度
    )  # 设置二维码的大小
    try:
        qr.add_data(data)
        # 生成二维码图片,fill_color二维码颜色,back_color二维码背景颜色
        img = qr.make_image(fill_color='green', back_color="white")
        # 用时间戳命名文件
        filename = str(time.time()).split('.')[0] + '.png'
        file = os.path.join(source, filename)
        # 添加logo,打开logo照片
        icon = Image.open("code_img/1.jpg")
        # 获取图片的宽高
        img_w, img_h = img.size
        # 参数设置logo的大小
        factor = 5
        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
        # 重新设置logo的尺寸
        icon = icon.resize((icon_w, icon_h))
        # 得到画图的x,y坐标,居中显示
        w = int((img_w - icon_w) / 2)
        h = int((img_h - icon_h) / 2)
        # 黏贴logo照
        img.paste(icon, (w, h), mask=None)
        # 保存
        img.save(file)
        print(f"二维码{filename}生成成功")
    except Exception as e:
        print(f"生成失败:{e}")


if __name__ == '__main__':
    source_path = r'code_img'
    data = 'https://blog.csdn.net/powerbiubiu'
    get_qr_code_image_by_logo(source_path, data)

以下为生成的二维码图片
1705835508.png

💖 欢迎关注我的公众号

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值