🚀 快速安装
复制以下命令并运行,立即安装此 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,并通过包管理器(
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) – 在 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 的区别)
📄 原始文档
完整文档(英文):
https://skills.sh/github/awesome-copilot/image-manipulation-image-magick
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)