🚀 快速安装

复制以下命令并运行,立即安装此 Skill:

npx @anthropic-ai/skills install github/awesome-copilot/image-manipulation-image-magick

💡 提示:需要 Node.js 和 NPM

使用 ImageMagick 进行图像处理

本技能支持使用 ImageMagick 在 Windows、Linux 和 macOS 系统上执行图像处理任务。

何时使用此技能

在需要以下操作时,可使用此技能:

  • 调整图像大小(单个或批量)
  • 获取图像尺寸和元数据
  • 转换图像格式
  • 创建缩略图
  • 为不同屏幕尺寸处理壁纸
  • 根据特定标准批量处理多个图像

先决条件

  • 系统上已安装 ImageMagick
  • Windows:安装了 PowerShell,并且 ImageMagick 可作为 magick 使用(或位于 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) – 在 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 的区别)

📄 原始文档

完整文档(英文):

https://skills.sh/github/awesome-copilot/image-manipulation-image-magick

💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。