当前位置: 首页 > 工具软件 > python-qrcode > 使用案例 >

Python利用qrcode生成二维码并解析结果

章青青
2023-12-01

使用到的库

1、qrcode

介绍:qrcode模块是Github上的一个开源项目,提供了生成二维码的接口。qrcode模块默认使用PIL库用于生成图像。
安装:

pip install qrcode

使用到的函数:qrcode.QRCode(),该函数用于生成二维码,传入的参数为生成二维码的内容以及样式控制

2、pyzbar

介绍:pyzbar是python的一个第三方库,其作用包括条形码生成和扫描器。
安装:

pip install pyzbar

使用到的函数:pyzbar.decode(),该函数用于解析二维码存储的信息

3、PIL

介绍:PIL,全称Python Image Library,主要作用是图像处理,可用于图片剪切、粘贴、缩放、镜像、水印、颜色块、滤镜、图像格式转换、色场空间转换、验证码、旋转图像、图像增强、直方图处理、插值和滤波等功能
安装:

pip install Pillow

代码

# -*- coding:utf-8 -*-
import os
import qrcode
from PIL import Image
from pyzbar import pyzbar

def make_qr_code_with_icon(content, icon_path, save_path=None):
    if not os.path.exists(icon_path):
        raise FileExistsError(icon_path)

    # First, generate an usual QR Code image
    qr_code_maker = qrcode.QRCode(version=5,
                                  error_correction=qrcode.constants.ERROR_CORRECT_H,
                                  box_size=8,
                                  border=4,
                                  )
    qr_code_maker.add_data(data=content)
    qr_code_maker.make(fit=True)
    qr_code_img = qr_code_maker.make_image(
        fill_color="black", back_color="white").convert('RGBA')

    # Second, load icon image and resize it
    icon_img = Image.open(icon_path)
    code_width, code_height = qr_code_img.size
    icon_img = icon_img.resize(
        (code_width // 4, code_height // 4), Image.ANTIALIAS)

    # Last, add the icon to original QR Code
    qr_code_img.paste(icon_img, (code_width * 3 // 8, code_width * 3 // 8))

    if save_path:
        qr_code_img.save(save_path)  # 保存二维码图片
        qr_code_img.show()  # 显示二维码图片
    else:
        print("保存错误!")


def decode_qr_code(code_img_path):
    if not os.path.exists(code_img_path):
        raise FileExistsError(code_img_path)
    # Here, set only recognize QR Code and ignore other type of code
    return pyzbar.decode(Image.open(code_img_path), symbols=[pyzbar.ZBarSymbol.QRCODE])

if __name__ == "__main__":
    print("1、请输入编码信息(可以为文字、链接、图片地址):")
    code_Data = input('>>:').strip()
    print("正在编码:")
    # ==生成带中心图片的二维码
    make_qr_code_with_icon(code_Data, "QRcodeCenter.jpg", "qrcode.png")  # 内容,center图片,生成二维码图片
    print("图片已保存,名称为:qrcode.png")
    results = decode_qr_code("qrcode.png")
    print("2、正在解码:")
    if len(results):
        print("解码结果是:")
        res = results[0].data.decode("utf-8")
        print(res)
        with open(r"./info.txt", "a+", encoding='utf-8')as f:
            f.seek(0)
            f.truncate()
            f.write(res)
    else:
        print("无法识别.")

 类似资料: