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

ran*_*alt 6 linux batch images

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

例如:如果图像是 2400x1800,则将其调整为 240x180 否则,如果是 1600x1800,则将其调整为 180x202

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

这怎么可能用命令行?我知道如何将每个文件调整为特定大小,但不知道如何调整大小。

mpy*_*mpy 5

使用convert具有如此最小尺寸选项的ImageMagick 怎么样,请参阅 图像几何选项?!

复制和粘贴代码段(bash 语法)——请注意^尺寸规范后面的内容:

for file in *.jpg; do
   echo -n Converting ${file}...
   convert -resize 180x180^ "$file" "th_$file"
   echo done
done
Run Code Online (Sandbox Code Playgroud)

此外,如果要将生成的文件裁剪为围绕中心的二次形状,可以使用此脚本。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
Run Code Online (Sandbox Code Playgroud)

该脚本不是很优化,因为它在缩略图上运行两个命令 (identifyconvert -crop)。但由于缩略图很小,我认为速度是合理的。