批量调整高度*宽度问题

批量调整高度*宽度问题

我正在尝试使用此脚本调整目录中所有图像的大小bash

for i in *.jpg; do
    printf "Resize $i\n"
    convert "$i" -resize 336x336 "$i"
done

但是当调整大小完成后,我得到了336x252.我该如何解决这个问题?

linux 调整图片大小问题

答案1

当 ImageMagickconvert实用程序调整图像大小时,它会保留图像的纵横比,而不会超出您指定的大小限制。

如果您有一个 48x36 像素大的图像(或 480x360 或具有相同 4:3 宽高比的图像),并且您要求convert将其大小调整为 336x336 像素,那么 336x252 是最大的图像,同时仍保留它的长宽比。

你可以力量 convert'336x336!'通过用作选项的选项参数来忽略图像的纵横比-resize

这在 ImageMagick 命令行文档的有关部分中进行了记录图像几何


在您的循环中,您使用了printf错误的方式。

改为这样做: printf 'Resizing %s\n' "$i"

printf应该的第一个参数总是是静态格式模板,其余参数应该是用于填写模板的数据。

也可以看看:ShellCheck 问题代码 SC2059(“不要在 printf 格式字符串中使用变量”)。

相关内容