命令行批量图像裁剪工具

59

有没有轻量级的命令行批量图片裁剪工具(适用于Linux或Windows),可以处理各种格式的图片?


您的系统是否还有其他需要告诉我们的信息?例如操作系统是什么? - pavium
无论是Linux还是Windows,我都在我的小型笔记本电脑上安装了两者。 - iceman
8个回答

61
在Linux中,您可以使用
mogrify -crop {Width}x{Height}+{X}+{Y} +repage image.png

用于CLI图像处理


2
在 Mac OS X 下,homebrew 可以轻松完成这项任务。运行 brew install imagemagick 安装所需的软件包,然后使用 ls -lrt /usr/local/bin/ 命令查看您的新工具。 - Bruno Bronosky
请注意,这个方法实际上并没有裁剪图像数据,它只是将裁剪矩形周围的区域变成空白,并将新的尺寸和偏移量写入图像元数据中,但是图像的“物理”尺寸不会改变。因此,这种方法在处理GIF等格式的图像时效果不佳。 - kralyk
5
要实际剪裁图片,按照通常理解此操作的方法,需结合“+repage”参数和剪裁操作符一起使用。 - kralyk
2
此外:尝试这个时,我感到非常困惑,直到我发现图像实际上是旋转的,并且图像查看器自动将其旋转为正立。(正确的方向包含在元数据/ exif 数据中,我想。)为了解决这个问题,我使用了这个命令:mogrify -alpha on -auto-orient *.jpg - Luc
2
@ReactiveRaven 链接失效了。 - Bhargav Rao
3
请注意,mogrify会覆盖原图像,而convert会将结果写入新的图像文件。 - Ciprian Tomoiagă

56

对我来说,Imagemagick的转换工具(不仅可以裁剪)非常适用:

convert -crop +100+10 in.jpg out.jpg

将左边框裁剪100像素,距离顶部10像素。

convert -crop -100+0 in.jpg out.jpg

从右边裁剪100像素,以此类推。
Imagemagick网站了解更多信息:

http://www.imagemagick.org/Usage/crop/#crop


8
值得一提的是,ImageMagick 的 convert 命令还提供了自动裁剪功能,通过使用 -trim 选项实现。 - Skippy le Grand Gourou
“-trim” 真是太棒了!它可以自动剪裁掉所有的白边。 - Yan King Yin

32

Imagemagick就是你想要的——经过验证,靠谱可信。


4
我来翻译一下:我想分享一件事,我试图在MSN上将链接粘贴给朋友,但无论如何似乎都被MSN列入了黑名单。为了分享链接,我不得不使用TinyURL。很奇怪。 - ScottN
6
那很奇怪。不过,MSN Messenger还存在吗?;) - axel_c
1
哈哈,我使用Pidgin,它仍然使用MSN协议,我相信。不过奇怪的是该域名被屏蔽了。 - ScottN
4
此回答未提及为什么他们需要它的具体原因,也未说明如何具体用于裁剪。 - metarmask

7

我迄今为止发现nconvert非常方便。


6
for f in final/**/*;
do
   convert -crop 950x654+0+660 "$f" "${f%.jpg}".jpg
done

这个脚本循环遍历所有子文件夹并裁剪.jpg文件。

4

macOS集成了sips图像处理工具。可用的裁剪功能包括:

    -c, --cropToHeightWidth pixelsH pixelsW 
        --cropOffset offsetY offsetH 

2

使用sips很容易:只需设置偏移量即可开始裁剪:

sips --cropOffset 1 1 -c <height> <width> -o output.png input.png

0

我已经扫描了一些页面,所有的 ~130 页都需要剪掉页面下方的 ~1/8。

使用 mogrify 对我没有用,

a@a-NC210-NC110:/media/a/LG/AC/Learn/Math/Calculus/Workshop/clockwise/aa$ mogrify -quality 100 -crop 2592×1850+0+0 *.jpg  
mogrify.im6: invalid argument for option `2592×1850+0+0': -crop @ error/mogrify.c/MogrifyImageCommand/4232.

然而convert却做到了:

a@a-NC210-NC110:~/Pictures/aa$ convert '*.jpg[2596x1825+0+0]' letter%01d.jpg  
a@a-NC210-NC110:~/Pictures/aa$

我在 内嵌图像裁剪 部分学到了这个链接

注意我的语法:我必须将几何信息放在方括号中:[]

尝试使用上述成功的语法,但使用 mogrify 却没有起作用,产生了:

a@a-NC210-NC110:~/Pictures/aa$ mogrify '*.jpg[2596x1825+0+0]' letter%01d.jpg
mogrify.im6: unable to open image `letter%01d.jpg': No such file or directory @ error/blob.c/OpenBlob/2638.

Linux a-NC210-NC110 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014 i686 i686 i686 GNU/Linux
Lubuntu 14.04 LTS

2
这是因为您使用了字符“×”而不是“x”。 - matt burns

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接