import os
from PIL import Image
根目录:C:\Users\Downloads\photo
user_profile = os.environ['USERPROFILE']
base_dir = os.path.join(user_profile, 'Downloads', 'photo')
output_folder = os.path.join(base_dir, '800x800_done')
target_size = (800, 800)
bg_color = (255, 255, 255) # 白色背景
os.makedirs(output_folder, exist_ok=True)
print("----------------------------------------")
print(f"正在全盘递归扫描文件夹: {base_dir}")
count = 0
os.walk 自动深入所有子文件夹(包括 input_images)查找图片
for root, dirs, files in os.walk(base_dir):
# 跳过自己生成的输出文件夹
if '_800x800_done' in root:
continue
for file in files: # 跳过 python 脚本本身 if file.endswith('.py'): continue file_path = os.path.join(root, file) # 尝试作为图片读取 try: with Image.open(file_path) as img: img = img.convert("RGB") # 等比例缩放(最长边不超过 800) img.thumbnail(target_size, Image.Resampling.LANCZOS) # 创建 800x800 白色画布并居中粘贴 canvas = Image.new("RGB", target_size, bg_color) paste_x = (target_size[0] - img.width) // 2 paste_y = (target_size[1] - img.height) // 2 canvas.paste(img, (paste_x, paste_y)) # 保存到最终输出目录 clean_name = os.path.splitext(file)[0] + ".jpg" output_path = os.path.join(output_folder, clean_name) canvas.save(output_path, "JPEG", quality=95) count += 1 print(f"[{count}] 成功转换: {file} -> {clean_name}") except Exception: # 忽略非图片文件 pass
print("----------------------------------------")
print(f"处理完成!共成功转换 {count} 张图片。")
print(f"请打开此文件夹查看结果: {output_folder}")