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

如何为Python PIL图片叠加代码添加循环实现多组图片批量处理

批量图片叠加实现方案

可以通过循环批量完成该处理,只要两个文件夹内的图片是一一对应关系即可,以下是可直接复用的代码:

import os
from PIL import Image, ImageOps

# 请修改为你自己的文件夹路径
FRONT_FOLDER = "./front_images"  # 存放前景图的文件夹
BG_FOLDER = "./background_images"  # 存放对应背景图的文件夹
OUT_FOLDER = "./output_images"  # 处理后图片的保存文件夹

# 自动创建输出文件夹,避免路径不存在报错
os.makedirs(OUT_FOLDER, exist_ok=True)

# 支持处理的图片格式,可按需补充
SUPPORT_EXTS = ('.png', '.jpg', '.jpeg', '.bmp')

# 遍历前景文件夹内的所有文件
for filename in os.listdir(FRONT_FOLDER):
    # 跳过非图片文件
    if not filename.lower().endswith(SUPPORT_EXTS):
        continue
    # 拼接前景图、背景图、输出图的完整路径
    front_path = os.path.join(FRONT_FOLDER, filename)
    bg_path = os.path.join(BG_FOLDER, filename)
    out_path = os.path.join(OUT_FOLDER, filename)
    
    # 跳过不存在对应背景图的文件
    if not os.path.exists(bg_path):
        print(f"跳过文件{filename}:未找到对应背景图")
        continue
    
    # 复用你原有的叠加逻辑
    img = Image.open(front_path, 'r')
    img_w, img_h = img.size
    background = Image.open(bg_path, 'r')
    bg_w, bg_h = background.size
    offset = ((bg_w - img_w) // 1, (bg_h - img_h) // 6)
    # 注意:如果你的前景图是带透明通道的PNG,请替换为下一行代码避免透明区域变白底
    # background.paste(img, offset, mask=img)
    background.paste(img, offset)
    
    background.save(out_path)
    print(f"已完成:{filename}")
注意事项
  • 代码默认要求前景图和背景图文件名完全一致,如果你的命名规则不同(比如前景为front_001.png、背景为bg_001.png),自行修改bg_path的拼接逻辑即可
  • 如果需要按序号顺序匹配而非文件名匹配,可分别读取两个文件夹的排序后文件列表,按索引一一对应调用即可
  • 处理1000张以上图片不会有性能问题,PIL的处理效率足够支撑该量级的批量任务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:48:02