Python|多文件夹批量编辑图片尺寸

需求示例:
1,原图为长方形,需统一修改为正方形图(上下增加白色背景画布)
2,同时统一图片尺寸为800X800像素
3,原图保存位置有多个文件夹,图片处理后需保持原文件夹分类状态

第一步:
在图片所在文件夹新建记事本,文件名称保存为

resize_to_square.py

第二步:右键用记事本打开py文件
复制以下代码

import os
from PIL import Image
自动获取脚本所在目录
base_dir = os.path.dirname(os.path.abspath(file))
target_size = (800, 800)
bg_color = (255, 255, 255) # 白色背景
valid_extensions = ('.jpg', '.jpeg', '.png', '.webp', '.bmp', '.jfif', '.avif')
print("----------------------------------------")
print(f"当前处理根目录: {base_dir}")
获取根目录下的所有子项
items = os.listdir(base_dir)
processed_folder_count = 0
total_image_count = 0
for item in items:
item_path = os.path.join(base_dir, item)
# 过滤只处理文件夹忽略 py 脚本以及已经生成的 _800x800 结果文件夹 if os.path.isdir(item_path) and not item.endswith('_800x800'): # 1. 为当前子文件夹独立创建对应的输出文件夹例如 原文件夹名_800x800output_subfolder = os.path.join(base_dir, f"{item}_800x800") os.makedirs(output_subfolder, exist_ok=True) print(f"\n 正在处理文件夹: [{item}] -> 输出至: [{item}_800x800]") sub_count = 0 # 2. 读取该文件夹下的所有图片 for filename in os.listdir(item_path): file_path = os.path.join(item_path, filename) # 如果是图片文件则进行转换 if os.path.isfile(file_path) and filename.lower().endswith(valid_extensions): 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)) # 保存到对应子文件夹中,确保不重名、不覆盖 output_filename = os.path.splitext(filename)[0] + ".jpg" output_path = os.path.join(output_subfolder, output_filename) canvas.save(output_path, "JPEG", quality=95) sub_count += 1 total_image_count += 1 print(f" └--> [成功] {filename} -> {output_filename}") except Exception as e: print(f" └--> [失败] 读取 {filename} 错误: {e}") print(f" 文件夹 [{item}] 处理完毕,共转换 {sub_count} 张图片。") processed_folder_count += 1
print("\n========================================")
print(f" 全部处理完成!")
print(f"共处理了 {processed_folder_count} 个文件夹,累计生成 {total_image_count} 张 800x800 正方形图片。")
print("========================================")

【这段代码可自动获取目录下所有子项,并独立创建对应的输出文件夹】

第三步:命令提示符Win + R),输入 cmd, 回车
输入以下代码或直接把py文件拖入cmd对话框中

python C:\Users\Downloads\photo\resize_to_square.py

程序执行完成后,会在新创建的子文件夹中显示尺寸为800的正方形图片文件。