生成带logo的二维码

# import qrcode
# img=qrcode.make("www.baidu.com")
# img.save("test.png")



"""
生成带logo的二维码
"""

import qrcode
from PIL import Image
import os


def gen_qrcode(string, path, logo=""):
    """
    生成中间带logo的二维码
    需要安装qrcode, PIL库
    :param string: 二维码字符串
    :param path: 生成的二维码保存路径
    :param logo: logo文件路径
    :return:
    """
    #设置二维码相关参数
    qr = qrcode.QRCode(
        version=8,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=8,
        border=1
    )
    qr.add_data(string)
    qr.make(fit=True)
    #生成二维码图片
    img = qr.make_image()
    img = img.convert("RGBA")
    img.save("a.png")

    if logo and os.path.exists(logo):
        icon = Image.open(logo)
        #获取二维码的宽和高
        img_w, img_h = img.size
        factor = 3
        size_w = int(img_w / factor)
        size_h = int(img_h / factor)
        #获取logo的宽和高
        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)

        #设置设置logo在二维码中的位置
        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.save(path)
        print("二维码已生成")
    else:
        print("logo图片不存在")


if __name__ == "__main__":
   gen_qrcode('海内存知己天涯若比邻',"qr.png", "haha.gif")

 

posted @ 2018-11-29 16:30  nester_liz  阅读(324)  评论(0编辑  收藏  举报