Embedded_game/chepai/HeChengTuPian.py

60 lines
2.6 KiB
Python
Raw Permalink Normal View History

2025-01-02 12:48:11 +08:00
import os
import random
from PIL import Image
def is_image_file(file_path):
valid_extensions = (".png", ".jpg", ".jpeg", ".gif", ".bmp") # 可识别的图片格式
_, extension = os.path.splitext(file_path)
return extension.lower() in valid_extensions
def overlay_images(background_folder, overlay_folder, output_folder):
# 获取背景图片列表
background_files = [file for file in os.listdir(background_folder) if is_image_file(file)]
overlay_files = [file for file in os.listdir(overlay_folder) if is_image_file(file)]
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 循环遍历每个背景图片
for bg_file in background_files:
bg_path = os.path.join(background_folder, bg_file)
background = Image.open(bg_path).convert("RGBA")
# 获取背景图片的宽高
bg_width, bg_height = background.size
min_dimension = min(bg_width, bg_height)
new_size = (min_dimension // 2, min_dimension // 2)
# 循环遍历每个透明背景图片,并依次进行合成
for overlay_file in overlay_files:
overlay_path = os.path.join(overlay_folder, overlay_file)
overlay = Image.open(overlay_path).convert("RGBA")
# 调整透明背景图片的大小
overlay.thumbnail(new_size, Image.LANCZOS)
# 随机生成合成图片的位置,确保不超出背景图片边界
max_x = bg_width - overlay.width
max_y = bg_height - overlay.height
position = (random.randint(0, max_x), random.randint(0, max_y))
# 创建新的背景图,并将透明背景图片按照透明度融合上去
merged_image = background.copy()
merged_image.alpha_composite(overlay, dest=position)
# 将合成后的图片调整到背景图片的一半大小
merged_image.thumbnail(new_size, Image.LANCZOS)
# 保存合成图片
output_path = os.path.join(output_folder, f"merged_{bg_file}_{overlay_file}")
merged_image.save(output_path, "PNG")
if __name__ == "__main__":
# 输入文件夹路径
background_folder = "/Users/zhenzhipeng/development/数据集相关文件/背景"
overlay_folder = "/Users/zhenzhipeng/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/abb33b2d6c9d8decd9ef7c0ddebe8cc2/Message/MessageTemp/050dd051d428f6b6f4a308cc5b7bef67/File/data/blue_plate"
output_folder = "/Users/zhenzhipeng/development/数据集相关文件/chepai"
overlay_images(background_folder, overlay_folder, output_folder)