使用python 生成二维码 中间带logo

推荐两个库:qrcode 和 python-qrcode。
qrcode 运行在 Python 3 版本上,它可以玩出很多花样。例如能生成以下三种二维码图片:普通二维码、带图片的艺术二维码(黑白与彩色)、动态二维码(黑白与彩色)。它比较适合直接用于生成二维码图片的场景。

安装 qrcode 库可以使用 pip 方式。但是该库依赖 pillow、numpy 和imageio。因此,我们需要先安装依赖库,再安装 qrcode。

  • 首先逐一安装需要的库
# 逐一安装
pip install pillow
pip install numpy
pip install imageio
pip install myqr
  • python-qrcode
    python-qrcode 相比 qrcode 要稍微逊色一点。不过它也有自己的特色。它支持生成矢量图,而且比较适合在代码中生成二维码的场景。

    安装 python-qrcode 同样建议使用 pip 方式,安装命令如下:

pip install qrcode

安装完这些依赖的库以后就可以开工啦。下面是完整的代码:

#!/user/bin/Python3


import qrcode
from PIL import Image
import matplotlib.pyplot as plt

'''
【红色】:red 【橙色】:orange 【黄色】:yellow 【绿】:green 【 蓝】:blue【紫】:purple 
【灰色】:gray 【白色】:white 【粉红色】:pink 【黑色】:black【墨绿色】:dark green 【橙红色】:orange-red
'''


def getQRcode(strs, name):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=2,
    )
    # 添加数据
    qr.add_data(strs)
    # 填充数据
    qr.make(fit=True)
    # 生成图片
    img = qr.make_image(fill_color="blue", back_color="white")
    img = img.convert("CMYK")  # RGBA
    # 添加logo
    icon = Image.open("1233.png")
    # 获取图片的宽高
    img_w, img_h = img.size
    factor = 6
    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), Image.ANTIALIAS)
    w = int((img_w - icon_w) / 2)
    h = int((img_h - icon_h) / 2)
    img.paste(icon, (w, h), icon)
    # 显示图片
    plt.imshow(img)
    plt.show()
    img.save(name)
    return img


if __name__ == '__main__':
    getQRcode("https://music.163.com/song?id=36990266&userid=112961323", '01.png')
    print('execute.....')

你可能感兴趣的:(python,python,二维码)