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

如何用Pillow或OpenCV在二维码旁及下方添加文本?

给二维码添加侧边和底部文本的实现方案

核心思路

不用ImageOps.fit,直接通过创建新画布、拼接二维码和文本层的方式更直观可控,步骤清晰:

  • 加载目标二维码图片,定义文本内容及样式参数
  • 计算所需的画布尺寸,预留文本区域空间
  • 将二维码粘贴到画布指定位置
  • 用ImageDraw在侧边和底部绘制文本
  • 导出最终合成图片

完整代码示例

from PIL import Image, ImageDraw, ImageFont

def add_text_to_qr(qr_path, side_text, bottom_text, output_path):
    # 加载二维码图片
    qr_img = Image.open(qr_path).convert("RGB")
    qr_w, qr_h = qr_img.size

    # 可自定义的配置参数
    font_path = "arial.ttf"  # 替换为你本地的字体文件路径
    side_font_size = 20
    bottom_font_size = 24
    padding = 10  # 文本与二维码的间距
    side_text_width = 150  # 侧边文本区域的宽度

    # 计算文本高度,确定新画布尺寸
    temp_draw = ImageDraw.Draw(Image.new("RGB", (1,1)))
    side_font = ImageFont.truetype(font_path, side_font_size)
    bottom_font = ImageFont.truetype(font_path, bottom_font_size)
    _, bottom_text_h = temp_draw.textsize(bottom_text, font=bottom_font)

    new_canvas_w = qr_w + side_text_width + padding
    new_canvas_h = qr_h + bottom_text_h + padding * 2

    # 创建白色背景的新画布
    new_img = Image.new("RGB", (new_canvas_w, new_canvas_h), color="white")

    # 将二维码粘贴到画布左侧(带内边距)
    new_img.paste(qr_img, (padding, padding))

    # 绘制右侧侧边文本
    draw = ImageDraw.Draw(new_img)
    side_text_x = qr_w + padding * 2
    side_text_y = padding + (qr_h - temp_draw.textsize(side_text, font=side_font)[1]) // 2
    draw.text((side_text_x, side_text_y), side_text, font=side_font, fill="black")

    # 绘制底部居中文本
    bottom_text_x = padding + (qr_w - temp_draw.textsize(bottom_text, font=bottom_font)[0]) // 2
    bottom_text_y = qr_h + padding * 2
    draw.text((bottom_text_x, bottom_text_y), bottom_text, font=bottom_font, fill="black")

    # 保存最终图片
    new_img.save(output_path)

# 调用示例
add_text_to_qr("qrcode.png", "扫码查看详情", "有效期至2025年12月", "qr_with_text.png")

自定义调整说明

  • 若要将文本放在二维码左侧,只需调整二维码粘贴位置为(side_text_width + padding*2, padding),侧边文本的x坐标改为padding
  • 字体文件可替换为系统内置字体,比如Windows的simhei.ttf、macOS的PingFang SC.ttc
  • 长文本需要换行时,可拆分字符串为多行,逐行计算y坐标后绘制,保证文本对齐

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:45:35