以下转载自:点击打开链接
#二维码的中间添加一个logo图片 qr = qrcode.QRCode( version = 1, #二维码大小(最小是1,是个21X21的矩阵,version+1,矩阵边长+4) error_correction = qrcode.constants.ERROR_CORRECT_H, #纠错等级_L(<=7%),_M(<=15%,默认),_Q(<=25%),_H(<=30%) box_size = 10, #控制二维码中每个格子包含的像素 border = 0 #控制二维码与图片边界的距离,默认为4 ) qr.add_data("abcd") qr.make(fit = True) img = qr.make_image() img = img.convert("RGBA") #设置颜色空间为RGBA(RGB + Alpha(透明度)) icon = Image.open("favicon.png") """ 此处的favicon.png需要是真正的png图片,其他格式转过来的也不行 会报ValueError: bad transparency mask 错误 具体参考:http://blog.csdn.net/heybob/article/details/46944925 """ 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_w: icon_h = size_h #将log图像大小限定在二维码大小的1/4以内 icon = icon.resize((icon_w,icon_h),Image.ANTIALIAS) w = int((img_w - icon_w) / 2 ) h = int((img_h - icon_h) / 2 ) #确定插入的log图像的位置(左上角的x,y坐标) img.paste(icon,(w,h),icon) img.save("img.png") img.show() 如果3个定位角也自定义图片的话 (下面是21×21的) import Image import qrcode qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=10, border=0 ) qr.add_data("abcd") qr.make(fit=True) img = qr.make_image() img = img.convert("RGBA") icon = Image.open("favicon.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) img.paste(icon, (w, h), icon) # dot1 dot1 = Image.open("dot1.png") dot1 = dot1.resize((30, 30), Image.ANTIALIAS) img.paste(dot1, (20, 20), dot1) # dot2 dot2 = Image.open("dot2.png") dot2 = dot1.resize((30, 30), Image.ANTIALIAS) img.paste(dot2, (160, 20), dot2) # 这个160随着version加1,大小加4*10, eg. 25*25是200 # dot3 dot3 = Image.open("dot3.png") dot3 = dot1.resize((30, 30), Image.ANTIALIAS) img.paste(dot3, (20, 160), dot3) img.save("test_qrcodex.png")