一、选择链接和图片
选择一个你想跳转的链接,比如这是我公众号一篇文章的链接:https://mp.weixin.qq.com/s/AFFUWnl8geuBG6m7OCyyqw
随便选择一个图片,保存在同一个路径,比如我选择的图片为Mandalorian.png
二、完整代码
import qrcode
from PIL import Image
# 目标网址
website_url = "https://mp.weixin.qq.com/s/AFFUWnl8geuBG6m7OCyyqw"
# 创建二维码对象
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=10,
border=4
)
# 添加数据到二维码
qr.add_data(website_url)
qr.make(fit=True)
# 生成二维码图像
img = qr.make_image(fill_color="black", back_color="white").convert('RGB')
# 加载彩色的卡通图案
cartoon_img_path = "Mandalorian.png"
cartoon_img = Image.open(cartoon_img_path)
# 调整卡通图案的大小
cartoon_img.thumbnail((img.size[0] * 0.2, img.size[1] * 0.2), Image.Resampling.LANCZOS)
# 检查是否存在透明度通道
if cartoon_img.mode == 'RGBA':
# 分离透明度通道作为一个遮罩
mask = cartoon_img.split()[3]
elif cartoon_img.mode == 'LA':
# 对于'L'和'Alpha'模式,遮罩是alpha通道
mask = cartoon_img.split()[1]
else:
# 如果不存在透明通道(例如,JPEG图像),则创建一个全白的遮罩(即不透明)
mask = Image.new('L', cartoon_img.size, 255)
# 计算卡通图案放置的位置(二维码中心)
pos = ((img.size[0] - cartoon_img.size[0]) // 2, (img.size[1] - cartoon_img.size[1]) // 2)
# 将卡通图案添加到二维码中,使用提取的透明度遮罩来正确处理透明部分
img.paste(cartoon_img, pos, mask)
# 保存生成的二维码图像
img.save("website_with_qrcode.png")
print("QR Code with cartoon image generated and saved as website_with_qrcode.png")
website_url处可改为你需要跳转的网站
cartoon_img_path改为你要在二维码中显示的图片
img.save("website_with_qrcode.png")改为你想保存的文件名