批量按序叠加两个文件夹中对应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
相关产品推荐
相关产品推荐

