Imagemagick转换调整大小再裁剪

47


我有1000多张不同分辨率的图片(例如1234x2122、4400x5212等),我希望将它们全部转换为固定的100x100大小。

  1. 首先,我需要保持比例调整图像大小,获得100xA或Ax100的尺寸,其中A>100(这取决于图像的宽度和高度,对于某些图像,宽度>高度,而对于一些图像,高度>宽度)。

  2. 从中心裁剪此图像以达到100x100的大小。

是否有一个简单的“convert”命令,可以用于处理我所有的图片?


似乎你想要做的与这个类似:http://www.imagemagick.org/discourse-server/viewtopic.php?t=18545 - phuclv
2个回答

73

使用-resize操作的几何调整器中的^area-fill)可以统一缩小图片。要裁剪中心,请使用-extent-gravity Center

convert input.jpg -resize 100x100^ \
                  -gravity Center  \
                  -extent 100x100  \
        output.jpg

更新

正如Mark Setchell在评论中指出的那样,可以利用mogrify实用程序批量转换项目。

mogrify -path ./path/to/write/results/ \
        -resize 100x100^ \
        -gravity Center  \
        -extent 100x100  \
        ./path/to/source/files/*

reminder 提醒: 如果不设置-path参数,Mogrify 将覆盖原始文件并用结果图像进行替换。


我投赞成票 :-) 如果 OP 有1000多张图片,可以提到 mogrify 命令。 - Mark Setchell
@emcconville,有没有办法在不失去PNG透明背景的情况下完成这个任务? - tukusejssirs
我已经找到了解决方案(来源):convert input.png -resize 100x100^ -gravity Center -background transparent -extent 100x100 output.png - tukusejssirs
答案是否完全符合Gor的要求?即,Gor要求中心部分在任何维度上都没有空白,但是反复阅读答案后,我有一种感觉,截至2015年9月8日给出的答案可能在任何维度上都填充了空白。我是对的吗,有人知道吗? - xpt
2022年对我不起作用。生成的图像没有围绕中心裁剪(很遗憾旋转中心的选项很少)。我设法在Pillow(Python)中旋转图像,它允许任意旋转中心。 - Yaroslav Nikitenko

4
为保持宽高比并不填充任何内容(extent),而是从超出宽高比的长边进行裁剪,您可以执行以下操作:
convert input.jpg -resize 100x100^ \
                  -gravity Center  \
                  -crop 100x100+0+0 +repage  \
        output.jpg

如果你想要的话,可以选择从一侧裁剪更多内容。


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