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

如何修改Python/PIL代码批量缩放子文件夹图片并添加缩略图后缀?

批量缩放JPG并另存为新文件的解决方案

完整可运行代码

import os
from PIL import Image

# 目标文件夹路径,os.path.expanduser兼容不同系统路径格式
root_dir = os.path.expanduser("../../Desktop/python/")
# 指定缩放尺寸
target_size = (450, 600)

# 递归遍历所有子文件夹及文件
for dirpath, _, filenames in os.walk(root_dir):
    for filename in filenames:
        # 过滤JPG文件(兼容大小写后缀)
        if filename.lower().endswith(".jpg"):
            img_full_path = os.path.join(dirpath, filename)
            try:
                # 打开图片并自动管理资源
                with Image.open(img_full_path) as img:
                    # 保持比例缩放至不超过目标尺寸,需强制拉伸则替换为img = img.resize(target_size)
                    img.thumbnail(target_size)
                    # 拆分文件名与扩展名,避免多圆点文件名出错
                    base_name, ext = os.path.splitext(filename)
                    # 构造新文件名
                    new_filename = f"{base_name}_thumbnail{ext}"
                    new_full_path = os.path.join(dirpath, new_filename)
                    # 保存缩放后的图片
                    img.save(new_full_path)
                    print(f"处理完成:{new_full_path}")
            except Exception as e:
                print(f"处理{img_full_path}失败:{str(e)}")

关键逻辑说明

  • 目录遍历:用os.walk递归扫描目标文件夹下所有子目录,确保嵌套的JPG文件都能被处理
  • 文件名处理:通过os.path.splitext拆分文件名和扩展名,避免直接字符串拼接导致的格式错误(比如原文件名为pic.detail.jpg时,能生成正确的pic.detail_thumbnail.jpg)
  • 缩放控制:thumbnail方法保留图片原始比例,将图片缩小至不超过目标尺寸;若需要强制拉伸到固定尺寸(忽略比例),替换为img.resize(target_size)即可
  • 异常防护:捕获单张图片处理时的错误,避免因某张损坏的图片导致整个程序中断

常见报错排查

  1. 文件名格式错误:若之前因新文件名格式报错,检查是否使用了os.path.splitext拆分扩展名,不要直接在原文件名后拼接字符串
  2. 权限问题:若提示PermissionError,确认目标文件夹有写入权限
  3. PIL读取失败:部分损坏或特殊编码的JPG可能无法被PIL读取,尝试升级pillow:pip install --upgrade pillow

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:54:21