You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python qrcode模块生成带Logo自定义二维码遇问题求助

带Logo的二维码最优实现方案

解决坐标轴错误与重叠问题的代码实现

以下是经过验证的可行代码,能避免坐标计算错误和图片重叠问题,同时保证二维码可正常扫描:

import qrcode
from PIL import Image

def generate_qr_with_logo(data, logo_path, output_path):
    # 1. 生成基础二维码,选用最高容错级别(H级,允许30%区域被遮挡)
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=4,
    )
    qr.add_data(data)
    qr.make(fit=True)
    qr_img = qr.make_image(fill_color="black", back_color="white").convert("RGBA")

    # 2. 处理Logo:按比例缩放、保留透明通道
    logo = Image.open(logo_path).convert("RGBA")
    # 限制Logo尺寸为二维码边长的1/4(避免遮挡过多影响扫码)
    qr_edge = qr_img.size[0]
    max_logo_size = qr_edge // 4
    logo.thumbnail((max_logo_size, max_logo_size))

    # 3. 计算居中位置,确保坐标合法(x0 <= x1、y0 <= y1)
    paste_pos = ((qr_edge - logo.size[0]) // 2, (qr_edge - logo.size[1]) // 2)

    # 4. 用Alpha通道蒙版粘贴Logo,避免生硬背景
    logo_mask = logo.split()[3]
    qr_img.paste(logo, paste_pos, mask=logo_mask)

    # 5. 保存最终图片(转RGB格式兼容更多保存格式)
    qr_img.convert("RGB").save(output_path)

# 调用示例
generate_qr_with_logo("你的内容或URL", "logo.png", "带logo的二维码.png")

关键优化点

  • 选ERROR_CORRECT_H容错:这是最高级别容错,保证Logo覆盖后二维码仍能被识别。
  • 严格控制Logo尺寸:限制为二维码1/4边长,既美观又避免坐标计算出现负值或反序的情况。
  • 用透明蒙版粘贴:保留Logo的透明区域,解决图片重叠时的生硬背景问题。

qrcode模块核心参数与方法详细说明

QRCode类初始化参数

  • version:二维码版本(1-40),版本越高可容纳数据越多、尺寸越大;设为1或None时会自动适配数据量。
  • error_correction:容错级别,可选值:
    • ERROR_CORRECT_L:容错7%
    • ERROR_CORRECT_M:容错15%(默认)
    • ERROR_CORRECT_Q:容错25%
    • ERROR_CORRECT_H:容错30%
  • box_size:二维码单个小方块的像素大小。
  • border:二维码四周空白边框的方块数,默认4(符合QR码国际标准)。

QRCode类核心方法

  • add_data(data):传入要编码的文本、URL或其他数据。
  • make(fit=True):生成二维码矩阵,fit=True会自动调整版本以适配数据量。
  • make_image(fill_color="black", back_color="white"):生成二维码图片,可指定前景/背景色,返回PIL Image对象。

本次用到的PIL关键方法说明

  • convert("RGBA"):将图片转为带透明通道的格式,支持处理Logo的透明区域。
  • thumbnail(size):按比例缩放图片,不会拉伸变形,保证Logo比例正常。
  • paste(img, pos, mask):将图片粘贴到目标位置,mask参数传入透明蒙版,实现不规则形状的无缝粘贴。

内容的提问来源于stack exchange,提问作者zanoth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:43:21