首页 > 解决方案 > 如何在 .bat 文件 (Windows) 中使用 ImageMagick 来调整所有子目录中的所有图像的大小?

问题描述

我在 Windows 服务器上有数以万计的图像。文件大小从 100x100 到 6000x6000 像素不等。文件为 jpg、gif 和 png。文件位于许多嵌套文件夹中。

我在服务器上安装了 Imagemagick。我正在寻求帮助来编写可以从 bat 文件运行的 ImageMagick 脚本(最顶层的目录将作为参数以及最大像素大小传入)。

该脚本将递归处理最顶层目录和所有子目录中的每个图像文件。只有当宽度或高度大于最大像素大小时,它才会调整图像大小(如果最大像素大小参数为 1200,它将调整 4000x2000 的图像大小,但不会调整 100x500 的图像大小)。它将宽度或高度(以较大者为准)调整为最大像素大小,并将其他维度的大小更改为成比例(即,在调整大小时不会歪斜或扭曲图像)。

是否可以编写一个 ImageMagick 脚本来完成所有这些工作?

标签: windowsbatch-fileimage-processingimagemagickimagemagick-convert

解决方案


因此,来自 fmw42 的链接中的信息足以拼凑出一个答案。

FOR /R %f IN (*.jpg) DO mogrify -verbose -resize "1200x1200>" "%f"

这将递归地影响从 ( FOR /R %f IN (*.jpg) DO) 运行的文件夹中及其下的每个 .jpg 文件。

如果相关图像在任一方向上大于 1200 像素,则每个文件将被缩小以适合 1200x1200 的框,并保持图像的纵横比。


推荐阅读