关于 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: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
指南
- 始终为文件路径加引号 - 对可能包含空格的文件路径使用引号
- 使用
&运算符(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 系统上,请使用
convert而非magick(ImageMagick 6.x 与 7.x)
评论
支持 Markdown