在命令行上将图像调整为最大尺寸

在命令行上将图像调整为最大尺寸

我有一个非常大的集合,我想要创建一个缩略图库,其中的图像被调整为最大最小宽度(你会明白)180px。

例如:如果图像为 2400x1800,则将调整大小为 240x180;如果图像为 1600x1800,则将调整大小为 180x202

清楚了吗?图片的最小尺寸应该正好是180,无论是宽度还是高度。

使用命令行如何实现这一点?我知道如何将每个文件调整为特定大小,但不知道如何调整这些不同的大小。

答案1

如何使用 ImageMagickconvert最小尺寸选项,请参见 图像几何选项?!

复制并粘贴代码片段(bash 语法)——请注意^大小规范之后的内容:

for file in *.jpg; do
   echo -n Converting ${file}...
   convert -resize 180x180^ "$file" "th_$file"
   echo done
done

此外,如果您想将生成的文件裁剪为中心周围的二次形状,可以使用此脚本。SIZE第一行中的参数指定(令人惊讶的是)缩略图的最终大小。

SIZE=180
for file in *.jpg; do
   echo -n Converting ${file}...
   convert -resize ${SIZE}x${SIZE}^ "$file" temp.png
   convert -crop $(identify temp.png | awk -F'[ x]' -v SIZE=$SIZE '{ printf "%ux%u+%u+%u", SIZE, SIZE, ($3-SIZE)/2, ($4-SIZE)/2 }') temp.png "th_$file"
   echo done
done
rm temp.png

该脚本没有经过优化,因为它在缩略图上运行了两个命令(identifyconvert -crop)。但由于缩略图很小,我认为速度还算合理。

相关内容