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

批量按序叠加两个文件夹中对应PNG图片的技术实现方法咨询

批量按序叠加PNG图片的实现方案

前置准备

  • 先安装Pillow库,执行命令:pip install pillow
  • 整理好三个文件夹:
    • folder1:存放背景PNG图片,文件名需按序号命名(比如1.png到5000.png)
    • folder2:存放前景PNG图片,文件名必须和folder1中的文件一一对应
    • output:新建空文件夹,用于保存合并后的图片

实现代码

from PIL import Image
import os

# 替换为你的实际文件夹路径
bg_folder = "folder1"
fg_folder = "folder2"
output_folder = "output"

# 自动创建输出文件夹(不存在则创建)
os.makedirs(output_folder, exist_ok=True)

# 按文件名中的数字序号排序,避免字符串排序导致的乱序
def sort_by_number(filename):
    return int(os.path.splitext(filename)[0])

bg_files = sorted([f for f in os.listdir(bg_folder) if f.endswith(".png")], key=sort_by_number)
fg_files = sorted([f for f in os.listdir(fg_folder) if f.endswith(".png")], key=sort_by_number)

# 逐对合并背景与前景图片
for bg_name, fg_name in zip(bg_files, fg_files):
    bg_path = os.path.join(bg_folder, bg_name)
    fg_path = os.path.join(fg_folder, fg_name)
    
    with Image.open(bg_path) as bg_img, Image.open(fg_path) as fg_img:
        # 如果前景与背景尺寸不一致,解开下面注释自动适配背景尺寸
        # fg_img = fg_img.resize(bg_img.size)
        
        # 叠加前景到背景,自动处理PNG透明度
        combined_img = Image.alpha_composite(bg_img.convert("RGBA"), fg_img.convert("RGBA"))
        
        # 保存合并后的图片,保留原序号命名
        output_path = os.path.join(output_folder, f"merged_{bg_name}")
        combined_img.save(output_path, "PNG")

print("所有图片批量合并完成!")

关键说明

  • 文件名配对:确保folder1和folder2中序号对应的文件名完全匹配,否则会出现配对错误
  • 排序逻辑:通过自定义排序函数按文件名中的数字排序,避免10.png排在2.png前面的字符串排序问题
  • 透明度处理:alpha_composite方法会正确识别PNG的alpha通道,保证前景的透明区域不会覆盖背景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:30:48