可以編寫一個 Bash 指令碼,使用 find
命令查詢圖片檔案並利用 imagemagick
或 jpegoptim
以及 pngquant
等工具來壓縮圖片。如果圖片大小大於 100KB,就進行壓縮。下面是一個示例指令碼:
準備工具:
- 安裝
imagemagick
:用於轉換圖片格式 - 安裝
jpegoptim
:用於壓縮.jpg
圖片 - 安裝
pngquant
:用於壓縮.png
圖片
安裝命令(適用於 Debian/Ubuntu 系列 Linux):
sudo apt-get update
sudo apt-get install imagemagick jpegoptim pngquant
指令碼內容:
#!/bin/bash
# 壓縮JPG圖片
compress_jpg() {
local file="$1"
echo "壓縮JPG檔案: $file"
jpegoptim --max=85 "$file" # 將質量降低到85%,根據需要調整
}
# 壓縮PNG圖片
compress_png() {
local file="$1"
echo "壓縮PNG檔案: $file"
pngquant --ext .png --force 128 "$file" # 將顏色數量減少到128
}
# 查詢並壓縮圖片
find . \( -name "*.png" -o -name "*.jpg" -o -name "*.jpeg" \) -type f | while read file; do
filesize=$(stat -c%s "$file")
# 如果檔案大於100KB
if [ $filesize -gt 102400 ]; then
if [[ $file == *.jpg || $file == *.jpeg ]]; then
compress_jpg "$file"
elif [[ $file == *.png ]]; then
compress_png "$file"
fi
else
echo "$file 小於100KB,無需壓縮"
fi
done
echo "壓縮完成!"
指令碼說明:
- 使用
find
查詢當前目錄下所有的.jpg
、.jpeg
、.png
圖片檔案。 - 使用
stat -c%s
獲取檔案大小。 - 如果檔案大於 100KB,則呼叫相應的壓縮函式:
.jpg
和.jpeg
檔案使用jpegoptim
進行壓縮。.png
檔案使用pngquant
進行壓縮。
- 如果圖片小於 100KB,指令碼會跳過該檔案。
使用方法:
將指令碼儲存為 compress_images.sh
,然後給予執行許可權並執行:
chmod +x compress_images.sh
./compress_images.sh