python中使用qrcode库生成二维码时,填充logo变成黑白色的解决方法。

python如何生成qrcode的教程已经有很多了,我这里仅仅排一下坑。

import qrcode
from PIL import Image


qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4
)
qr.add_data('https://blog.csdn.net/github_38854366')
qr.make(fit=True)
# 问题就出在这个地方,如果要生成白底黑码的二维码必须要在这里以RGB的方式指定颜色。
img = qr.make_image(fill_color="#000", back_color="#FFF")
img_w, img_h = img.size
factor = 4
size_w = int(img_w / factor)
size_h = int(img_h / factor)
icon = Image.open("logo.png")
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)
img.save('qrcode.png')

至于为什么要用RGB来指定黑白色,我认为是默认的black,white生成的图是黑白图,每个像素点只有0和1两种状态。而用RGB来指定颜色,则生成的是彩色图。一个是只有黑白两色,一个是只用了黑白两种颜色,那么彩色图在两种图里的表现就不言而喻了吧。当然,我也没有很细致地去考究,欢迎指正。

你可能感兴趣的:(遇过的坑,python)