image-manipulation-image-magick について
ImageMagickを使った画像処理スキルで、画像を確認・加工するユーザー向けです。Windows、Linux、macOSでのサイズ変更、メタデータ確認、形式変換、サムネイル作成に対応します。
主な機能
- 01画像サイズとメタデータの確認
- 02単一画像や複数画像のサイズ変更
- 03サムネイルの作成
- 04サイズに応じたファイル処理
- 05画像形式の変換
活用シーン
- 01編集前の画像サイズ確認
- 02画像コレクションのサムネイル作成
- 03画面に合わせた壁紙のサイズ変更
- 04サイズやファイル形式による一括処理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ github/ awesome-copilot --skill image-manipulation-image-magickインストール後、Claude Code で/image-manipulation-image-magickを入力して読み込まれたか確認します。
詳細
ImageMagick による画像操作
このスキルは、Windows、Linux、macOS システム全体で ImageMagick を使用した画像処理および操作タスクを可能にします。
このスキルを使用する場面
次のような必要がある場合にこのスキルを使用します:
- 画像のリサイズ(単一またはバッチ)
- 画像の寸法とメタデータの取得
- 画像フォーマット間の変換
- サムネイルの作成
- さまざまな画面サイズ向けの壁紙の処理
- 特定の条件による複数画像のバッチ処理
前提条件
- システムに ImageMagick がインストールされていること
- Windows: ImageMagick が
magickとして(またはC:\Program Files\ImageMagick-*\magick.exeに)利用可能な PowerShell - Linux/macOS: パッケージマネージャー(
apt、brewなど)経由で ImageMagick がインストールされた Bash
主な機能
1. 画像情報
- 画像の寸法(幅 x 高さ)の取得
- 詳細なメタデータ(フォーマット、色空間など)の取得
- 画像フォーマットの識別
2. 画像のリサイズ
- 単一画像のリサイズ
- 複数画像のバッチリサイズ
- 特定の寸法でのサムネイル作成
- アスペクト比の維持
3. バッチ処理
- 寸法に基づく画像の処理
- 特定のファイルタイプのフィルタリングと処理
- 複数ファイルへの変換の適用
使用例
例 0: magick 実行ファイルの解決
PowerShell(Windows):
# Prefer ImageMagick on PATH
$magick = (Get-Command magick -ErrorAction SilentlyContinue)?.Source
# Fallback: common install pattern under 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 not found. Install it and/or add 'magick' to PATH."
}
Bash(Linux/macOS):
# Check if magick is available on PATH
if ! command -v magick &> /dev/null; then
echo "ImageMagick not found. Install it using your package manager:"
echo " Ubuntu/Debian: sudo apt install imagemagick"
echo " macOS: brew install imagemagick"
exit 1
fi
例 1: 画像の寸法の取得
PowerShell(Windows):
# For a single image
& $magick identify -format "%wx%h" path/to/image.jpg
# For multiple images
Get-ChildItem "path/to/images/*" | ForEach-Object {
$dimensions = & $magick identify -format "%f: %wx%h`n" $_.FullName
Write-Host $dimensions
}
Bash(Linux/macOS):
# For a single image
magick identify -format "%wx%h" path/to/image.jpg
# For multiple images
for img in path/to/images/*; do
magick identify -format "%f: %wx%h\n" "$img"
done
例 2: 画像のリサイズ
PowerShell(Windows):
# Resize a single image
& $magick input.jpg -resize 427x240 output.jpg
# Batch resize images
Get-ChildItem "path/to/images/*" | ForEach-Object {
& $magick $_.FullName -resize 427x240 "path/to/output/thumb_$($_.Name)"
}
Bash(Linux/macOS):
# Resize a single image
magick input.jpg -resize 427x240 output.jpg
# Batch resize images
for img in path/to/images/*; do
filename=$(basename "$img")
magick "$img" -resize 427x240 "path/to/output/thumb_$filename"
done
例 3: 詳細な画像情報の取得
PowerShell(Windows):
# Get verbose information about an image
& $magick identify -verbose path/to/image.jpg
Bash(Linux/macOS):
# Get verbose information about an image
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 "Processing $($_.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 "Processing $filename"
magick "$img" -resize 427x240 "path/to/output/thumb_$filename"
fi
fi
done
ガイドライン
- ファイルパスは常に引用符で囲む - スペースを含む可能性のあるファイルパスは引用符で囲んでください
&演算子を使用する(PowerShell) - 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 required"; 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 システムでは、
magickの代わりにconvertを使用してください(ImageMagick 6.x と 7.x)
コメント
Markdown 対応