Hen*_*ryh 12 unix command-line imagemagick
使用ImageMagick,如何调整图像大小以使其最小化:
并且还有一个最大值:
更新:
如果它有帮助,这里是我正在经历的进一步解释.
我有一系列具有不同比例尺寸的图像.一些图像具有1:5的高/宽比.有些具有5:1的高/宽比.所以我想要做的是设置图像的最小高度/宽度大小,但也不希望图像大小大于特定大小.
如果我需要对图像应用白色填充以使其适合我的约束,这样我就不必扭曲图像,我想这样做.
好的,我做了一些类似的处理.我没有任意大小和宽高比的通用解决方案,但如果您的输入图像集是1:5或5:1,您可以将它们分为2类,并使用其中一些代码片段进行相应处理.
步骤1:确定图像的纵横比,并根据该纵横比设置目标最终更改尺寸.
INPATH="path/to/your_file.jpg"
DIMS=`identify "${INPATH}" | awk '{print $3}'`
WIDTH=`echo "${DIMS}"| cut -dx -f1`
HEIGHT=`echo "${DIMS}"| cut -dx -f2`
if (( ${WIDTH} > ${HEIGHT} ));
then
#file is in landscape orientation
THUMBDIM="80x60"
WEBDIM="624x480"
else
#file is in portrait orientation
echo -n "(Portrait orientation) "
THUMBDIM="60x80"
WEBDIM="480x624"
fi
Run Code Online (Sandbox Code Playgroud)
第2步,做实际调整大小:
convert "${INPATH}" -resize "${THUMBDIM}" "resized-${INPATH}"
Run Code Online (Sandbox Code Playgroud)
此示例假定一组固定的所需大小,但当然您可以使用原始尺寸作为输入进行一些基本算术,并按比例放大以适合您指定的边界.
使用ImageMagick,您只需要mogrify两遍:一次放大小于所需最小限度的路径,另一次缩小大于最大限度的路径。例如,要批量调整一堆JPEG大小:
mogrify '*.jpg[!200x150<]'
mogrify '*.jpg[!275x225>]'
Run Code Online (Sandbox Code Playgroud)
第一遍放大小于200x150的图像,第二遍缩小大于275x225的图像(是的,符号正确!)。mogrify替换原始图像,这是您在这种情况下需要做的,以避免在每次通过时重新调整图像的大小,并最终得到两个已处理的副本。
即使它们是两次通过,您也只能处理每个图像一次(几乎,请参阅下文)。假定需要调整所有图像的大小,第一个处理x%的图像,其他遍处理剩余的100- x%(加c,请参见下文)。
!用于对超出范围(我们的常数c)的图像(例如1200x100的图像)强制改变宽高比,无论275x225还是200x150都不适合。这些图像 将被处理两次:在第一遍中,范围(高度或宽度)以下的方面将增加到最小,在第二遍中,其他方面将减少到最大。
希望能有所帮助。