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

本文详细介绍了使用Python生成带有Logo的二维码(QRCode)的过程。通过调整颜色模式为RGB,确保生成的二维码为白底黑码。并演示了如何将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.youkuaiyun.com/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来指定颜色,则生成的是彩色图。一个是只有黑白两色,一个是只用了黑白两种颜色,那么彩色图在两种图里的表现就不言而喻了吧。当然,我也没有很细致地去考究,欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值