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

批量压缩多级文件夹内JPEG并清理原文件的实现方案咨询

批量压缩JPEG图片并保留文件夹结构的实现方法

以下是几种实用的实现方案,均能在保留原有文件夹层级的前提下完成批量压缩:

方案1:使用ImageMagick命令行工具(跨平台)

ImageMagick是一款开源的图片处理工具,支持Windows、Linux、macOS全平台,适合快速批量处理。

Linux/macOS终端命令

在主文件夹路径下打开终端,执行以下命令(可根据需求调整压缩质量):

find /path/to/main-folder -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) | while read img; do
  # 生成带_compressed后缀的压缩文件,避免覆盖原文件
  convert "$img" -quality 70 "${img%.jpg}_compressed.jpg"
  # 若需直接替换原文件,取消下方注释
  # mv "${img%.jpg}_compressed.jpg" "$img"
done
  • -quality 70:控制压缩质量,数值范围1-100,数值越低体积越小、画质损失越大,70-80区间肉眼画质差异极小。

Windows批处理脚本

将以下代码保存为compress_jpegs.bat,修改主文件夹路径后双击运行:

@echo off
setlocal enabledelayedexpansion
set "quality=70"
set "main_folder=C:\path\to\your-main-folder"

for /r "%main_folder%" %%f in (*.jpg *.jpeg) do (
  magick "%%f" -quality !quality! "%%~dpnf_compressed%%~xf"
  :: 若需替换原文件,取消下方注释
  :: move /y "%%~dpnf_compressed%%~xf" "%%f"
)
endlocal
  • 需先安装ImageMagick,安装时勾选"Add application directory to your system path",确保magick命令能被系统识别。

方案2:使用Python脚本(灵活可控)

适合需要自定义处理逻辑的场景,依赖Pillow库实现图片压缩。

  1. 先安装依赖库:
pip install pillow
  1. 编写脚本compress_jpegs.py:
import os
from PIL import Image

def compress_single_jpeg(input_path, output_path, quality=70):
    try:
        with Image.open(input_path) as img:
            # 处理带透明通道的图片(若存在)
            if img.mode in ("RGBA", "P"):
                img = img.convert("RGB")
            # 启用优化编码提升压缩效率
            img.save(output_path, "JPEG", quality=quality, optimize=True)
    except Exception as e:
        print(f"处理失败 {input_path}: {str(e)}")

def batch_compress(main_folder, quality=70):
    # 递归遍历所有子文件夹
    for root, _, files in os.walk(main_folder):
        for file in files:
            if file.lower().endswith((".jpg", ".jpeg")):
                input_path = os.path.join(root, file)
                # 生成压缩文件名,或直接替换原文件
                output_path = os.path.join(root, f"{os.path.splitext(file)[0]}_compressed.jpg")
                # 若需替换原文件,将上方output_path改为input_path即可
                compress_single_jpeg(input_path, output_path, quality)

if __name__ == "__main__":
    # 修改为你的主文件夹路径,Windows下用双反斜杠(如"C:\\Users\\xxx\\main-folder")
    MAIN_FOLDER = "/path/to/your-main-folder"
    batch_compress(MAIN_FOLDER, quality=75)

方案3:Windows PowerShell脚本

适合熟悉PowerShell的用户,同样依赖ImageMagick:

$mainFolder = "C:\path\to\your-main-folder"
$quality = 70

Get-ChildItem -Path $mainFolder -Recurse -Include *.jpg,*.jpeg | ForEach-Object {
    $outputPath = Join-Path $_.DirectoryName "$($_.BaseName)_compressed$($_.Extension)"
    magick $_.FullName -quality $quality $outputPath
    # 需替换原文件则取消下方注释
    # Move-Item -Path $outputPath -Destination $_.FullName -Force
}

通用注意事项

  • 压缩前务必备份原文件,避免操作失误导致文件损坏。
  • 建议先选取少量测试图片调整质量参数,找到体积与画质的平衡点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:35:21