如何从命令行使用 ImageMagick 裁剪图像?

如何从命令行使用 ImageMagick 裁剪图像?

我正在尝试在命令行上使用 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
    

相关内容