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 中已透過套件管理器(
apt、brew等)安裝 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
使用指南
- 務必為檔案路徑加上引號 - 若路徑可能包含空格,請使用引號括起來
- 在 PowerShell 中使用
&運算子 - 使用&來呼叫 magick 執行檔 - 將路徑儲存在變數中 (PowerShell) - 將 ImageMagick 路徑指派給
$magick以保持程式碼簡潔 - 使用迴圈 - 處理多個檔案時,使用
ForEach-Object(PowerShell) 或for迴圈 (Bash) - 先確認尺寸 - 在處理前先檢查圖片尺寸,避免不必要的操作
- 使用適當的調整旗標 - 考慮使用
!強制指定尺寸,或^指定最小尺寸
常見模式
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 的差異)






