只使用ImageMagick将较大的图像按比例缩小

30

使用ImageMagick,我可以轻松地截取我想要的屏幕截图,但我希望将其调整大小以节省空间。我找到了这个:

convert screen.jpg    -resize 1280x1024\!  screen.jpg

但我想根据最大的大小(宽度或高度)来调整其大小,并且另一个维度(高度或宽度)也将被按比例调整大小。

例如,假设我希望所有图像都调整为其最大宽度/高度为600像素:

  • 1920x1200 => 宽度最大:600x375
  • 600x1200 => 高度最大:300x600

如何使用ImageMagick实现这一点? (或者至少,定义一个最大尺寸(例如仅宽度))。

感谢您的帮助!

注意:是否可能使用import命令自动实现它?

2个回答

64
为了保持长宽比:

convert -resize 600x600 screen.jpg:

  • 1920x1200 => 600x375
  • 600x1200 => 300x600
  • 150x300 => 300x600
  • 300x150 => 600x300

convert -resize 600x600\> screen.jpg:

  • 1920x1200 => 600x375
  • 600x1200 => 300x600
  • 150x300 => 150x300(不会被放大)
  • 300x150 => 300x150(不会被放大)

1
在Windows中出现了无效参数!有什么想法吗? - Pinser
13
在Windows中,使用^来转义它,因此可以将-resize 600x600^>用作命令。 - Ian Leslie
2
对我来说,缺少输出文件名。 - Fernando
2
mogrify 替换 convert,以覆盖输入文件。 - kub1x
2
或者 -resize "1150x1150>" - Pavel
显示剩余3条评论

28
为保持宽高比,您可以按一定比例缩小图像:

convert -resize 50% screen.jpg

或者使用像素面积:

convert -resize 180000@ screen.jpg

这也会将小图像放大到指定的面积。如果您希望ImageMagick缩小大图像但保持小图像不变,请使用“>”运算符:

convert -resize '180000@>' screen.jpg

请注意,您需要引用几何参数,以防止shell将“>”符号解释为文件重定向。

有关这些和其他选项,请参见ImageMagick文档:http://www.imagemagick.org/script/command-line-processing.php#geometry


但是使用您的方法,更小的图像也会被调整大小,对吗? - Cyril N.
2
好的。我已经在我的回答中包含了这个方面。 - EPSG31468

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