我正在尝试在命令行上使用 ImageMagick 裁剪 640x640 的图像。
我需要从图片底部从左到右移除大约 20 个像素。底部有一条长条。
我知道shave
命令。
在命令行中输入的命令是什么?我正在使用该软件的 Windows 版本。
答案1
假设您始终知道图像的大小,您可以这样做:
convert original.jpg -crop 640x620+0+0 cropped.jpg
使用-crop
操作符,您可以指定剪切图像的大小以及与旧图像左上角的偏移量。为了消除底部的 20px,您必须选择大小640x620
和偏移量0+0
答案2
使用图像魔术师运算-chop
符如下,从底部删除 20 行像素:
convert image.png -gravity South -chop 0x20 result.png
改为-gravity North
砍掉前 20 行。
改成:
convert image.png -gravity East -chop 20x0 result.png
从右侧裁剪,注意现在的 20 像素前分隔x
符。
答案3
实际上我花了一段时间才把这个问题解决,所以我想把它发布在这里。
"C:\Program Files\ImageMagick-7.0.10-Q8\magick" convert -crop 100x100+800+600 fileIn.png fileOut.png
因此,需要不带“-”的“magick”、“convert”,然后是带“-”的选项。这个奇怪调用的历史是,convert 曾经是一个可执行文件(唯一的可执行文件是 magick)。但是,由于有另一个同名“convert”的 Windows 系统程序,它现在以某种方式作为参数传递。此外,还需要在路径中包含文件夹。
简化调用的简单批处理可以是:
crop fileIn.png fileOut.png 100,100,800,600
代码如下
crop.bat
set fname1=%1
set fname2=%2
set x0=%3
set y0=%4
set w=%5
set h=%6
"C:\Program Files\ImageMagick-7.0.10-Q8\magick" convert -crop %w%x%h%+%x0%+%y0% %fname1% %fname2%
答案4
- 分批居中裁剪
for f in *.jpg; do convert "$f" -gravity center -crop 98x98+0+0 +repage "$f" ; done
-extent
在画布上实现-background white
for f in *.jpg; do convert "$f" -gravity center -crop 98x98+0+0 +repage -extent 98x98 -background white "$f" ; done