image-manipulation-image-magick

image-manipulation-image-magick

熱門

使用 ImageMagick 處理和操作圖片。支援調整大小、格式轉換、批次處理以及取得圖片中繼資料。適用於處理圖片、建立縮圖、調整桌布尺寸或執行批次圖片操作。

3.6萬星標
4556分支
更新於 2026/7/13
SKILL.md
readonlyread-only
name
image-manipulation-image-magick
description

使用 ImageMagick 處理和操作圖片。支援調整大小、格式轉換、批次處理以及取得圖片中繼資料。適用於處理圖片、建立縮圖、調整桌布尺寸或執行批次圖片操作。

使用 ImageMagick 進行圖片操作

此技能可讓您在 Windows、Linux 和 macOS 系統上執行圖片處理與操作任務。

何時使用此技能

當您需要以下功能時,請使用此技能:

  • 調整圖片大小(單張或批次)
  • 取得圖片尺寸與中繼資料
  • 轉換圖片格式
  • 建立縮圖
  • 為不同螢幕尺寸處理桌布
  • 根據特定條件批次處理多張圖片

前置需求

  • 系統已安裝 ImageMagick
  • Windows:PowerShell 中可透過 magick 使用 ImageMagick(或位於 C:\Program Files\ImageMagick-*\magick.exe
  • Linux/macOS:Bash 中已透過套件管理器(aptbrew 等)安裝 ImageMagick

核心功能

1. 圖片資訊

  • 取得圖片尺寸(寬 x 高)
  • 取得詳細中繼資料(格式、色彩空間等)
  • 辨識圖片格式

2. 圖片調整大小

  • 調整單張圖片大小
  • 批次調整多張圖片大小
  • 建立指定尺寸的縮圖
  • 維持長寬比

3. 批次處理

  • 根據尺寸處理圖片
  • 篩選並處理特定檔案類型
  • 對多個檔案套用轉換

使用範例

範例 0:解析 magick 執行檔路徑

PowerShell (Windows):

# 優先使用 PATH 上的 ImageMagick
$magick = (Get-Command magick -ErrorAction SilentlyContinue)?.Source

# 備用:Program Files 下的常見安裝路徑
if (-not $magick) {
    $magick = Get-ChildItem "C:\\Program Files\\ImageMagick-*\\magick.exe" -ErrorAction SilentlyContinue |
        Select-Object -First 1 -ExpandProperty FullName
}

if (-not $magick) {
    throw "找不到 ImageMagick。請安裝它或將 'magick' 加入 PATH。"
}

Bash (Linux/macOS):

# 檢查 magick 是否在 PATH 上
if ! command -v magick &> /dev/null; then
    echo "找不到 ImageMagick。請使用套件管理器安裝:"
    echo "  Ubuntu/Debian: sudo apt install imagemagick"
    echo "  macOS: brew install imagemagick"
    exit 1
fi

範例 1:取得圖片尺寸

PowerShell (Windows):

# 單張圖片
& $magick identify -format "%wx%h" path/to/image.jpg

# 多張圖片
Get-ChildItem "path/to/images/*" | ForEach-Object { 
    $dimensions = & $magick identify -format "%f: %wx%h`n" $_.FullName
    Write-Host $dimensions 
}

Bash (Linux/macOS):

# 單張圖片
magick identify -format "%wx%h" path/to/image.jpg

# 多張圖片
for img in path/to/images/*; do
    magick identify -format "%f: %wx%h\n" "$img"
done

範例 2:調整圖片大小

PowerShell (Windows):

# 調整單張圖片大小
& $magick input.jpg -resize 427x240 output.jpg

# 批次調整圖片大小
Get-ChildItem "path/to/images/*" | ForEach-Object { 
    & $magick $_.FullName -resize 427x240 "path/to/output/thumb_$($_.Name)"
}

Bash (Linux/macOS):

# 調整單張圖片大小
magick input.jpg -resize 427x240 output.jpg

# 批次調整圖片大小
for img in path/to/images/*; do
    filename=$(basename "$img")
    magick "$img" -resize 427x240 "path/to/output/thumb_$filename"
done

範例 3:取得詳細圖片資訊

PowerShell (Windows):

# 取得圖片的詳細資訊
& $magick identify -verbose path/to/image.jpg

Bash (Linux/macOS):

# 取得圖片的詳細資訊
magick identify -verbose path/to/image.jpg

範例 4:根據尺寸處理圖片

PowerShell (Windows):

Get-ChildItem "path/to/images/*" | ForEach-Object { 
    $dimensions = & $magick identify -format "%w,%h" $_.FullName
    if ($dimensions) {
        $width,$height = $dimensions -split ','
        if ([int]$width -eq 2560 -or [int]$height -eq 1440) {
            Write-Host "正在處理 $($_.Name)"
            & $magick $_.FullName -resize 427x240 "path/to/output/thumb_$($_.Name)"
        }
    }
}

Bash (Linux/macOS):

for img in path/to/images/*; do
    dimensions=$(magick identify -format "%w,%h" "$img")
    if [[ -n "$dimensions" ]]; then
        width=$(echo "$dimensions" | cut -d',' -f1)
        height=$(echo "$dimensions" | cut -d',' -f2)
        if [[ "$width" -eq 2560 || "$height" -eq 1440 ]]; then
            filename=$(basename "$img")
            echo "正在處理 $filename"
            magick "$img" -resize 427x240 "path/to/output/thumb_$filename"
        fi
    fi
done

使用指南

  1. 務必為檔案路徑加上引號 - 若路徑可能包含空格,請使用引號括起來
  2. 在 PowerShell 中使用 & 運算子 - 使用 & 來呼叫 magick 執行檔
  3. 將路徑儲存在變數中 (PowerShell) - 將 ImageMagick 路徑指派給 $magick 以保持程式碼簡潔
  4. 使用迴圈 - 處理多個檔案時,使用 ForEach-Object (PowerShell) 或 for 迴圈 (Bash)
  5. 先確認尺寸 - 在處理前先檢查圖片尺寸,避免不必要的操作
  6. 使用適當的調整旗標 - 考慮使用 ! 強制指定尺寸,或 ^ 指定最小尺寸

常見模式

PowerShell 模式

模式:儲存 ImageMagick 路徑
$magick = (Get-Command magick).Source
模式:將尺寸存入變數
$dimensions = & $magick identify -format "%w,%h" $_.FullName
$width,$height = $dimensions -split ','
模式:條件式處理
if ([int]$width -gt 1920) {
    & $magick $_.FullName -resize 1920x1080 $outputPath
}
模式:建立縮圖
& $magick $_.FullName -resize 427x240 "thumbnails/thumb_$($_.Name)"

Bash 模式

模式:檢查 ImageMagick 安裝
command -v magick &> /dev/null || { echo "需要 ImageMagick"; exit 1; }
模式:將尺寸存入變數
dimensions=$(magick identify -format "%w,%h" "$img")
width=$(echo "$dimensions" | cut -d',' -f1)
height=$(echo "$dimensions" | cut -d',' -f2)
模式:條件式處理
if [[ "$width" -gt 1920 ]]; then
    magick "$img" -resize 1920x1080 "$outputPath"
fi
模式:建立縮圖
filename=$(basename "$img")
magick "$img" -resize 427x240 "thumbnails/thumb_$filename"

限制

  • 大量批次操作可能耗費大量記憶體
  • 某些複雜操作可能需要額外的 ImageMagick 外掛程式
  • 在較舊的 Linux 系統上,請使用 convert 代替 magick(ImageMagick 6.x 與 7.x 的差異)