实现定制二维码(有空研究下)

任意链接生成二维码,并把把图片镶嵌在二维码中

食用方式

更改creat_qrcode(url,fikename)对应的两个参数即可

import qrcode # 二维码生成包
from PIL import Image # 图片处理包


def creat_qrcode(url,filename):
    qr = qrcode.QRCode(
        version= 1,
        # 设置容错率未最高
        error_correction=qrcode.ERROR_CORRECT_H,
        box_size=10, # 应该是二维码尺寸
        border= 4, # 二维码边框,边界宽度
    )
    qr.add_data(url) # 把链接传进去
    qr.make(fit=True) # fit等于true是干啥为了制作
    img = qr.make_image() # 不知
    # 设置二维码为彩色
    img = img.convert('RGBA')
    icon = Image.open(filename) # 调用Image模块中的open函数,导入二维码中的图标
    w,h = img.size
    factor = 4 # 不知
    size_w = int(w/factor) # 为了之后的尺寸运算么
    size_h = int(h/factor)
    icon_w,icon_h = icon.size # 和上面img二维码一样,不过这里是图标

    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((w-icon_w)/2) # 设置二维码图片大小
    h = int((h-icon_h)/2)
    icon = icon.convert('RGBA')
    newing = Image.new('RGBA',(icon_w + 8,icon_h+8),(255,255,255)) # 不知
    img.paste(newing,(w-4,h-4),newing) # 不知
    img.paste(icon,(w,h),icon)
    img.save('qr2.png',quality = 100) #quality = 100难道是像素

if __name__ == '__main__':
    # 这里不能直接加图片名,不知为啥,明明放在同一文件夹下;与运行执行路径有关
    creat_qrcode('http://120.27.220.235:8001/',r'test\\logo1.png') # 估计Image.open函数的传参有关系
    print('完成')
    

posted @ 2021-08-14 20:32  索匣  阅读(87)  评论(0编辑  收藏  举报