【gpt搬運】bash指令碼壓縮png,jpg圖片,當圖片大小大於100kb的時候

imzhi發表於2024-10-12

可以編寫一個 Bash 指令碼,使用 find 命令查詢圖片檔案並利用 imagemagickjpegoptim 以及 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

這樣,指令碼就會自動壓縮當前目錄下的所有大於 100KB 的圖片。

相關文章