用qrcode和pyzbar分别生成和解码二维码

我用的是anaconda环境,在anaconda命令行下,用pip分别安装以下库文件:

pip install opencv-python

pip install numpy

pip install pillow

pip install myqr

pip install qrcode

pip install zxing

生成二维码

打开pycharm,新建一个工程,生成二维码的代码如下:

from PIL import Image
import qrcode

if __name__ == '__main__':
    qr = qrcode.QRCode(version=5, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=8, border=4)
    qr.add_data("www.baidu.com!")
    qr.make(fit=True)

    img = qr.make_image()
    img = img.convert("RGBA")

    # 自己选择一个需要放在二维码中央的图片保存到目录下 我这里用的是 img.png
    icon = Image.open("img.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)
    icon = icon.convert("RGBA")
    img.paste(icon, (w, h), icon)
    img.show()  # 显示图片,可以通过save保存

生成了如下图片:

识别二维码

在加载 

from pyzbar import pyzbar

的过程中,可能会出现报错,此时可以安装上这个Visual C++ 2013可以解决:

Download Visual C++ Redistributable Packages for Visual Studio 2013 from Official Microsoft Download Center

解码函数如下:

def decode_qr_code(code_img_path):
    if not os.path.exists(code_img_path):
        raise FileExistsError(code_img_path)
    return pyzbar.decode(Image.open(code_img_path), symbols=[pyzbar.ZBarSymbol.QRCODE])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东成2022

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值