逐個處理數百或數千張圖片既耗時又低效。批次壓縮允許您使用一致的品質設定同時壓縮多張圖片,節省數小時的手動工作。本綜合指南涵蓋了2025年批次壓縮圖片所需的所有知識。

為什麼要批次壓縮圖片
節省時間
手動處理:
- 100張圖片 × 每張2分鐘 = 200分鐘(3.3小時)
- 重複點擊和等待
- 易出錯且不一致
批次處理:
- 100張圖片總計5-10分鐘
- 設定一次,全部壓縮
- 所有圖片結果一致
節省時間:減少95%的處理時間
圖片間的一致性
好處:
- 所有圖片相同的品質設定
- 統一的檔案大小
- 可預測的結果
- 專業外觀
- 更易管理
使用場景:
- 網站圖片畫廊
- 產品目錄
- 相簿
- 行銷材料
- 社群媒體內容日曆
常見批次壓縮場景
| 場景 | 圖片數量 | 節省時間 | 典型目標 |
|---|---|---|---|
| 網站遷移 | 500-5,000 | 15-50小時 | 總大小減少70-80% |
| 照片庫清理 | 1,000-10,000 | 30-150小時 | 節省儲存空間 |
| 產品目錄 | 100-1,000 | 3-30小時 | 一致的品質/大小 |
| 社群媒體活動 | 50-200 | 2-7小時 | 平台特定最佳化 |
| 活動攝影 | 200-2,000 | 7-60小時 | 可分享的大小 |
| 電子郵件行銷 | 20-100 | 1-3小時 | 低於大小限制 |
批次圖片壓縮的最佳工具

線上工具
TinyImagePro(推薦)
功能:
- 免費,無需註冊
- 用戶端處理(隱私友好)
- 桌面端一次最多上傳20張圖片,行動端最多10張
- 可調品質設定
- 格式轉換(JPEG、PNG、WebP)
- ZIP下載所有壓縮圖片
工作流:
- 造訪 TinyImagePro.com
- 拖放多張圖片
- 選擇壓縮級別或預設
- 點擊「全部壓縮」
- 單獨下載或作為ZIP
最適合:桌面端和行動端的快速批次、注重隱私的使用者、無需安裝
限制:桌面端每批最多20張圖片,行動端最多10張(對於更大的集合可重複批次)
Squoosh(Google)
功能:
- 進階壓縮選項
- 多格式支援
- 並排比較
- 現代編解碼器(WebP、AVIF)
限制:一次處理一張圖片(不是真正的批次處理)
最適合:批次處理前測試壓縮設定
TinyPNG
功能:
- 智慧有損壓縮
- WebP支援
- 批次上傳(最多20張圖片)
- 自動化API
定價:
- 免費:每月20張圖片,每張5MB
- 專業版:每月500張圖片25美元/年
最適合:PNG最佳化、每月定期批次
桌面軟體
Adobe Lightroom
功能:
- 專業批次匯出
- 基於預設的工作流程
- 每種格式的品質控制
- 中繼資料管理
- RAW檔案支援
工作流:
- 將照片匯入目錄
- 選擇所有要匯出的圖片
- 檔案 → 匯出
- 選擇匯出預設(品質、尺寸、格式)
- 點擊匯出
定價:每月9.99美元(攝影計劃)
最適合:攝影師、大型照片庫、專業工作流程
XnConvert(免費)
功能:
- 出色的批次處理
- 動作/預設
- 500+格式支援
- 調整大小、旋轉、浮水印
- 跨平台(Windows、Mac、Linux)
工作流:
- 新增檔案或整個資料夾
- 新增動作:調整大小、品質調整
- 設定輸出格式和設定
- 轉換
最適合:進階使用者、複雜批次操作、免費解決方案
ImageOptim(僅Mac,免費)
功能:
- 拖放批次處理
- 無損和有損壓縮
- 自動中繼資料移除
- 多個最佳化工具組合
- 處理速度非常快
工作流:
- 將圖片拖入ImageOptim
- 自動最佳化開始
- 檔案被覆蓋(或單獨儲存)
最適合:Mac使用者、快速最佳化、無損壓縮
RIOT(Radical Image Optimization Tool)- Windows,免費
功能:
- 即時預覽
- 批次處理
- 多格式支援
- 品質比較
最適合:Windows使用者、視覺品質控制
命令列工具
ImageMagick
安裝:
# macOS
brew install imagemagick
# Ubuntu/Debian
sudo apt-get install imagemagick
# Windows
# 從imagemagick.org下載
基本批次壓縮:
# 將資料夾中所有JPEG壓縮至80%品質
mogrify -quality 80 -strip *.jpg
# 調整大小並壓縮
mogrify -resize 1600x -quality 80 -strip *.jpg
# 也處理子資料夾
find . -type f -name "*.jpg" -exec mogrify -quality 80 -strip {} \;
進階批次處理:
# 將所有PNG轉換為最佳化的JPEG
mogrify -format jpg -quality 85 -strip *.png
# 調整至最大寬度,保持縱橫比
mogrify -resize 1920x\> -quality 82 *.jpg
# 在單獨的資料夾中建立縮圖
mkdir thumbnails
mogrify -path thumbnails -thumbnail 400x400 -quality 75 *.jpg
最適合:自動化、伺服器端處理、進階使用者、腳本編寫
cwebp(Google WebP編碼器)
批次轉換為WebP:
# 將所有JPEG轉換為WebP
for file in *.jpg; do
cwebp -q 80 "$file" -o "${file%.jpg}.webp"
done
# Windows PowerShell
Get-ChildItem -Filter *.jpg | ForEach-Object {
cwebp -q 80 $_.FullName -o "$($_.BaseName).webp"
}
最適合:WebP轉換、現代網頁最佳化
pngquant(PNG最佳化器)
批次PNG壓縮:
# 有損PNG壓縮(256色)
pngquant --quality=65-80 --ext .png --force *.png
# 使用自訂輸出批次處理
pngquant --quality=70-85 *.png --output optimized-*.png
最適合:PNG檔案大小減少、保持透明度
分步指南:批次壓縮圖片

場景1:網站圖片畫廊(100張圖片)
目標:將100張產品照片從每張5MB(總計500MB)減少到100MB以下
方法:TinyImagePro + 手動批次
步驟:
-
組織圖片
/products ├── batch-01(圖片1-20) ├── batch-02(圖片21-40) ├── ... └── batch-05(圖片81-100) -
處理第一批
- 在桌面端向 TinyImagePro 上傳最多20張圖片,行動端最多10張
- 設定品質:80%
- 目標尺寸:1600×1600px
- 點擊「全部壓縮」
- 下載為ZIP
-
重複所有批次
- 處理批次2-10
- 保持一致的設定
- 下載每批
-
驗證結果
- 檢查檔案大小(目標:每張800KB-1MB)
- 抽查圖片品質
- 總大小:~90MB(減少82%)
所需時間:30-45分鐘(vs. 手動3+小時)
場景2:照片庫最佳化(1,000張度假照片)
目標:將1,000張家庭照片從35GB減少到10GB以下用於雲端儲存
方法:XnConvert(桌面)
步驟:
-
下載並安裝XnConvert
- 從xnview.com下載
- 安裝並啟動
-
新增檔案
- 輸入分頁 → 新增檔案
- 選擇所有1,000張照片(或新增資料夾)
-
設定動作
- 動作分頁 → 新增動作
- 動作1:調整大小
- 模式:適合寬度/高度
- 寬度:1600px
- 保持縱橫比:是
- 動作2:調整品質(如果是JPEG)
- 品質:80%
-
設定輸出選項
- 輸出分頁
- 格式:JPEG
- 品質:80
- 目標:建立資料夾「optimized」
- 檔名:{Filename}_optimized
-
處理
- 點擊「轉換」
- 等待批次完成(10-20分鐘)
-
驗證
- 檢查輸出資料夾
- 總大小:~9.5GB(減少73%)
- 抽查隨機圖片的品質
所需時間:30分鐘(vs. 手動30+小時)
場景3:社群媒體內容日曆(50個貼文)
目標:為Instagram準備50張圖片(1080×1080px,最佳化品質)
方法:命令列批次處理腳本
步驟:
- 建立批次處理腳本
Mac/Linux (instagram-batch.sh):
#!/bin/bash
# 建立輸出目錄
mkdir -p instagram_optimized
# 處理所有圖片
for file in *.jpg *.jpeg *.png; do
if [ -f "$file" ]; then
# 調整至1080x1080並壓縮
convert "$file" \
-resize 1080x1080^ \
-gravity center \
-extent 1080x1080 \
-quality 82 \
-strip \
"instagram_optimized/${file%.*}_insta.jpg"
echo "已處理: $file"
fi
done
echo "批次處理完成!檢查instagram_optimized資料夾"
Windows (instagram-batch.bat):
@echo off
mkdir instagram_optimized
for %%f in (*.jpg *.jpeg *.png) do (
magick "%%f" -resize 1080x1080^ -gravity center -extent 1080x1080 -quality 82 -strip "instagram_optimized\%%~nf_insta.jpg"
echo 已處理: %%f
)
echo 批次處理完成!
pause
-
執行腳本
# Mac/Linux chmod +x instagram-batch.sh ./instagram-batch.sh # Windows instagram-batch.bat -
結果
- 50張圖片在2-3分鐘內最佳化
- 全部1080×1080px
- 壓縮至每張約1-1.5MB
- 準備好Instagram上傳
所需時間:5分鐘(vs. 手動1.5小時)
場景4:電商產品目錄(300件商品)
目標:建立每張產品圖片的多個版本(原始、大、中、縮圖)
方法:ImageMagick批次處理腳本,多個輸出
腳本:
#!/bin/bash
# 建立輸出目錄
mkdir -p {original,large,medium,thumbnail}
# 處理每張圖片
for img in source/*.jpg; do
filename=$(basename "$img" .jpg)
# 原始品質(存檔)
cp "$img" "original/${filename}.jpg"
# 大(產品頁)
convert "$img" \
-resize 2000x2000 \
-quality 90 \
-strip \
"large/${filename}_large.jpg"
# 中(分類頁)
convert "$img" \
-resize 800x800 \
-quality 85 \
-strip \
"medium/${filename}_medium.jpg"
# 縮圖(網格)
convert "$img" \
-resize 400x400^ \
-gravity center \
-extent 400x400 \
-quality 80 \
-strip \
"thumbnail/${filename}_thumb.jpg"
echo "已處理: $filename(4個版本)"
done
echo "完成!處理了$(ls source/*.jpg | wc -l)個產品"
結果:
- 300個產品 × 4個版本 = 產生1,200張圖片
- 所有產品品質一致
- 在單獨的資料夾中組織
- 時間:15-20分鐘(vs. 手動10+小時)
進階批次壓縮技術
保留資料夾結構
批次處理巢狀資料夾時,保留組織:
# ImageMagick:處理整個目錄樹
find ./source -type f \( -name "*.jpg" -o -name "*.png" \) | while read file; do
# 取得相對路徑
rel_path="${file#./source/}"
output_dir="./optimized/$(dirname "$rel_path")"
# 建立輸出目錄
mkdir -p "$output_dir"
# 壓縮圖片
convert "$file" \
-resize 1600x -quality 80 -strip \
"$output_dir/$(basename "$file")"
done
基於檔案大小的條件處理
僅壓縮超過特定大小的圖片:
#!/bin/bash
# 僅壓縮超過1MB的圖片
for img in *.jpg; do
size=$(stat -f%z "$img" 2>/dev/null || stat -c%s "$img" 2>/dev/null)
size_mb=$((size / 1048576))
if [ $size_mb -gt 1 ]; then
convert "$img" -quality 80 -strip "compressed_$img"
echo "已壓縮: $img ($size_mb MB)"
else
echo "已跳過: $img ($size_mb MB - 已經很小)"
fi
done
平台特定批次處理
為不同平台建立不同版本:
#!/bin/bash
img=$1
basename="${img%.*}"
# Instagram(1080x1080)
convert "$img" -resize 1080x1080^ -gravity center -extent 1080x1080 \
-quality 82 -strip "${basename}_instagram.jpg"
# Facebook(最大2048寬)
convert "$img" -resize 2048x -quality 85 -strip "${basename}_facebook.jpg"
# Twitter(1200x675)
convert "$img" -resize 1200x675^ -gravity center -extent 1200x675 \
-quality 78 -strip "${basename}_twitter.jpg"
# Pinterest(1000x1500)
convert "$img" -resize 1000x1500! -quality 83 -strip "${basename}_pinterest.jpg"
echo "建立了$img的4個社群媒體版本"
為所有圖片執行:
for img in *.jpg; do
./social-media-batch.sh "$img"
done
批次新增浮水印
為所有圖片套用浮水印:
#!/bin/bash
watermark="logo.png"
for img in *.jpg; do
convert "$img" "$watermark" \
-gravity SouthEast \
-geometry +20+20 \
-composite \
-quality 85 \
"watermarked_$img"
echo "已新增浮水印: $img"
done
漸進式JPEG批次建立
將所有圖片轉換為漸進式JPEG:
# ImageMagick
mogrify -interlace Plane -quality 82 *.jpg
# 或使用MozJPEG以獲得更好壓縮
for img in *.jpg; do
cjpeg -progressive -quality 85 -outfile "progressive_$img" "$img"
done
帶回退的格式轉換
建立WebP版本和JPEG回退:
#!/bin/bash
for img in *.jpg; do
basename="${img%.jpg}"
# 建立最佳化的JPEG
convert "$img" -quality 85 -strip "${basename}_opt.jpg"
# 建立WebP版本
cwebp -q 80 "$img" -o "${basename}.webp"
echo "為$img建立了JPEG和WebP"
done
自動化和工作流程
監視資料夾自動化
自動壓縮新增到資料夾的新圖片:
Mac(使用Automator + 資料夾動作):
- 開啟Automator → 新增文件 → 資料夾動作
- 選擇要監視的資料夾
- 新增動作:
- 過濾Finder項目(僅圖片)
- 執行Shell腳本:
for f in "$@"; do convert "$f" -resize 1600x -quality 80 -strip "${f%.*}_compressed.jpg" done
- 儲存資料夾動作
Linux(使用inotifywait):
#!/bin/bash
watch_dir="/path/to/watch"
output_dir="/path/to/output"
inotifywait -m -e create -e moved_to --format '%w%f' "$watch_dir" | while read file; do
if [[ $file =~ \.(jpg|jpeg|png)$ ]]; then
filename=$(basename "$file")
convert "$file" -resize 1600x -quality 80 -strip "$output_dir/$filename"
echo "自動壓縮: $filename"
fi
done
帶進度條的批次處理
顯示大批次的進度:
#!/bin/bash
total=$(ls *.jpg | wc -l)
current=0
for img in *.jpg; do
((current++))
percent=$((current * 100 / total))
printf "\r處理中: %d/%d (%d%%) - %s" "$current" "$total" "$percent" "$img"
convert "$img" -quality 80 -strip "compressed_$img"
done
echo -e "\n\n批次處理完成!"
基於雲端的批次處理
使用Cloudinary API(Node.js範例):
const cloudinary = require('cloudinary').v2;
const fs = require('fs');
const path = require('path');
cloudinary.config({
cloud_name: 'your_cloud_name',
api_key: 'your_api_key',
api_secret: 'your_api_secret'
});
// 批次上傳和最佳化
const images = fs.readdirSync('./images');
images.forEach(async (img) => {
const filepath = path.join('./images', img);
try {
const result = await cloudinary.uploader.upload(filepath, {
quality: 'auto:best',
fetch_format: 'auto',
folder: 'compressed'
});
console.log(`已上傳: ${img} -> ${result.secure_url}`);
} catch (error) {
console.error(`上傳${img}時出錯:`, error);
}
});
批次壓縮最佳實務
批次處理前
✅ 備份原件 - 永遠不要覆蓋來源檔案 ✅ 在樣本上測試 - 先處理5-10張圖片以驗證設定 ✅ 組織檔案 - 按用途、大小或品質需求分組 ✅ 檢查檔案類型 - 將JPEG與PNG分開 ✅ 記錄設定 - 記錄壓縮參數以供將來參考 ✅ 計劃輸出結構 - 決定資料夾組織
批次處理時
✅ 使用一致的設定以獲得統一結果 ✅ 監控前幾個輸出以盡早發現錯誤 ✅ 按邏輯批次處理(按資料夾、日期或類別) ✅ 清晰命名輸出(compressed_、optimized_等) ✅ 保持原件與處理檔案分開 ✅ 記錄處理以進行故障排除
批次處理後
✅ 驗證隨機樣本 - 檢查10-20張圖片的品質 ✅ 比較檔案大小 - 確保預期減少 ✅ 在實際使用中測試 - 上傳到網站、社群媒體等 ✅ 檢查相容性 - 驗證格式按預期工作 ✅ 記錄工作流程 - 儲存腳本/設定以供將來使用 ✅ 安全存檔原件
批次壓縮故障排除
問題:批次處理中途失敗
原因:
- 損壞的圖片檔案
- 磁碟空間不足
- 檔案權限問題
- 記憶體限制
解決方案:
- 首先檢查損壞的檔案:
identify -verbose *.jpg > /dev/null 2>&1 - 確保足夠的可用磁碟空間(總圖片大小的2-3倍)
- 使用適當的權限執行(如需要,chmod、sudo)
- 以更小的批次處理
- 增加系統記憶體分配
問題:輸出品質不一致
原因:
- 混合來源品質
- 不同的圖片尺寸
- 不同的內容類型(照片vs圖形)
解決方案:
- 按類型分開:
# 處理照片 mogrify -quality 80 photos/*.jpg # 分別處理圖形 mogrify -quality 90 graphics/*.png - 條件處理:
for img in *.jpg; do if identify -format '%w' "$img" | awk '{if($1>2000)exit 0;exit 1}'; then convert "$img" -resize 1600x -quality 80 "optimized_$img" else convert "$img" -quality 85 "optimized_$img" fi done
問題:批次處理時間太長
原因:
- 一次處理太多圖片
- 高解析度來源
- 複雜操作(多次調整大小、浮水印)
解決方案:
- 並行處理:
# GNU Parallel(透過brew/apt安裝) ls *.jpg | parallel convert {} -quality 80 optimized_{} # 或使用xargs find . -name "*.jpg" | xargs -P 4 -I {} convert {} -quality 80 opt_{} - 以更小批次處理(一次100-200)
- 使用更快的壓縮演算法
- 升級硬體或使用雲端處理
問題:輸出檔案比預期大
原因:
- 品質設定太高
- 內容格式不合適
- 中繼資料未去除
解決方案:
- 降低品質:75-80%而非85-90%
- 轉換格式:
mogrify -format jpg -quality 85 *.png # PNG轉JPEG - 去除中繼資料:
mogrify -strip -quality 80 *.jpg - 如果過大則調整大小:
mogrify -resize 1920x\> -quality 80 *.jpg
批次壓縮比較
| 方法 | 速度(100張) | 易用性 | 靈活性 | 成本 | 最適合 |
|---|---|---|---|---|---|
| TinyImagePro | 10-15分鐘 | 非常容易 | 中等 | 免費 | 快速批次、初學者 |
| XnConvert | 3-5分鐘 | 容易 | 高 | 免費 | 桌面使用者、複雜工作流程 |
| Lightroom | 5-8分鐘 | 中等 | 高 | ¥67/月 | 攝影師、RAW檔案 |
| ImageMagick | 2-4分鐘 | 困難 | 非常高 | 免費 | 自動化、進階使用者 |
| Cloudinary | 5-10分鐘 | 中等 | 高 | 付費 | 基於雲端、API整合 |
常見問題
問:我可以免費線上批次壓縮圖片嗎? 答:可以。TinyImagePro允許桌面端每批最多20張圖片、行動端最多10張,且免費使用。對於更大的集合可以重複批次。其他選項包括TinyPNG(每月20張免費)或桌面工具如XnConvert(無限制,免費)。
問:批次壓縮1,000張圖片最快的方法是什麼? 答:命令列工具如ImageMagick與並行處理。使用適當的硬體,1,000張圖片預計10-20分鐘。
問:批次壓縮會降低品質嗎? 答:僅在使用有損壓縮時。在75-85% JPEG品質下,品質損失最小。始終先在樣本上測試。
問:如何批次壓縮圖片而不損失品質? 答:使用無損PNG壓縮(OptiPNG、pngquant)或90-95%品質的JPEG。檔案大小減少將較小(10-30% vs 60-80%)。
問:我可以撤銷批次壓縮嗎? 答:不能。始終保留原始檔案備份。壓縮圖片無法恢復到原始品質。
問:批次壓縮應該使用什麼品質設定? 答:大多數用途75-85%。專業/作品集更高(85-90%),縮圖/電子郵件更低(70-75%)。
問:如何在Mac/Windows上批次壓縮圖片? 答:Mac:ImageOptim(拖放),Windows:RIOT或XnConvert。兩者都是免費且使用者友好的。
問:我可以在手機上批次壓縮圖片嗎? 答:可以,但有限。Photo Compress(iOS)和Image Compressor(Android)等應用程式支援批次處理,通常一次10-20張圖片。
問:批次壓縮對珍貴照片安全嗎? 答:是的,如果您保留原始備份。處理副本,永遠不要處理原件。對於不可替代的照片使用無損或高品質設定(85-90%)。
問:批次壓縮後我的圖片會小多少? 答:在75-85%品質下通常小60-80%。根據圖片內容、來源品質和設定而異。先測試樣本。
結論
批次圖片壓縮對於有效管理大量圖片至關重要。無論您是最佳化網站、組織照片庫還是準備社群媒體內容,批次處理都能節省無數小時,同時確保一致的品質。
要點總結:
- 選擇正確的工具滿足您的需求(線上、桌面或命令列)
- 在樣本上測試設定然後處理整個批次
- 批次處理前始終備份原件
- 使用一致的設定以獲得統一結果
- 自動化工作流程用於重複任務
- 透過抽查驗證結果
- 目標75-85%品質以獲得最佳大小/品質平衡
準備好批次壓縮您的圖片了嗎?試試我們的免費圖片壓縮工具,桌面端一次可快速批次處理最多20張圖片,行動端最多10張。
相關指南:


