mcpField
I
image-manipulation-image-magick

image-manipulation-image-magick

github.com/github创意与媒体40.5k9.7k 次安装1 天前更新
代码仓库

关于 image-manipulation-image-magick

这是一个基于 ImageMagick 的图像处理技能,适合需要检查或批量处理图像的用户。它涵盖尺寸调整、元数据查询、格式转换和缩略图制作,支持 Windows、Linux 和 macOS。

主要功能

  1. 01查看图像尺寸和元数据
  2. 02调整单张或批量图像尺寸
  3. 03制作缩略图
  4. 04按尺寸处理文件
  5. 05转换图像格式

适用场景

  1. 01编辑前检查图像尺寸
  2. 02为图像集合制作缩略图
  3. 03调整壁纸以适配不同屏幕
  4. 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:PowerShell,且 ImageMagick 可作为 magick 使用(或位于 C:\Program Files\ImageMagick-*\magick.exe)
  • Linux/macOS:Bash,且已通过包管理器(apt、brew 等)安装 ImageMagick

核心能力

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

指南

  1. 始终为文件路径加引号 - 对可能包含空格的文件路径使用引号
  2. 使用 & 运算符(PowerShell) - 在 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 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 系统上,请使用 convert 而非 magick(ImageMagick 6.x 与 7.x)

评论

支持 Markdown