ImageMagick:居中并调整多张图片的大小并保留原始文件名

3

早上好,

我想将一个文件夹中多个宽高比例不同的图片居中并调整大小,同时保留文件名。以下是我想要的效果(对于特定的图片效果完美),但需要命名每个具体的图片。

convert -size 100x100 xc:black -gravity center originalpic.jpg -thumbnail 300x300 -composite newpic.jpg

我尝试使用 * 保留原始文件名并处理文件夹中的每个文件,但没有成功。 有人知道如何做吗?
谢谢!
2个回答

5
使用"Mogrify"命令来处理多个文件,具体操作请参考mogrify页面。
mogrify -size 100x100 xc:black -gravity center -thumbnail 300x300 -composite *.jpg

另一种方法是在Bash中遍历图像,并使用相同的名称作为输出来覆盖:
for f in *.jpg
do convert -size 100x100 xc:black -gravity center $f -thumbnail 300x300 -composite $f
done

那对我没用 - 图像似乎没有任何变化。 - Andre
1
很奇怪,这就是“mogrify”应该做的事情。如果您在Linux上,可以在bash中迭代文件并对它们使用“convert”。请查看答案。 - enrico.bacis
第二个建议用bash对我也不起作用 - 我认为是因为“originalpic.jpg”(当然,我已经用原始文件名替换了它)。我也尝试过用*.jpg和$f,但都没有成功... - Andre
第二个关于bash的方法现在对我有效了。非常感谢enrico.bacis! - Andre

0

我觉得我大致明白了:

首先将大小缩小到您想要的高度,例如364像素:

mogrify -resize x364 *.jpg

然后,例如您想要获得546x364像素的尺寸,可以使用以下代码:

mogrify -extent 546x364 -gravity center *.jpg

但是在原始大小为512x768的图像中,背景被填充为白色,所以我尝试了

mogrify -extent 546x364 -gravity center -background black *.jpg

mogrify -extent 546x364 -gravity center -fill black *.jpg

但是背景仍然是白色的 :-(


“mogrify”通常不需要“sudo”。我猜你的*.jpg文件在一个你没有写入文件权限的目录中,或者你对*.jpg文件本身没有写入权限。 - Glenn Randers-Pehrson

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