我有一个非常大的集合,我想要创建一个缩略图库,其中的图像被调整为最大最小宽度(你会明白)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
该脚本没有经过优化,因为它在缩略图上运行了两个命令(identify
和convert -crop
)。但由于缩略图很小,我认为速度还算合理。