在Automator中使用bash调整图像大小并保留图像比例



我正在尝试编写一个自动应用程序,将采取图像文件并将其大小调整到指定的宽度,但保持原始图像文件的高度/宽度比。

我一直在尝试在bash中使用sips,但我不确定我在哪里出错了。我在谷歌上找不到任何参考BASH或sip的东西。

我试图采取的高度和宽度传递的图像,找出比例,然后使用目标宽度和目标高度调整图像的大小(从目标宽度和比例计算)

这是我当前的shell脚本,我将图像作为Pass input: as arguments.

传入
 height=`sips --getProperty pixelHeight $@`
 width=`sips --getProperty pixelWidth $@`
 ratio=height/width
 targetWidth=262
 targetHeight=targetWidth*ratio
 sips --resampleHeightWidth targetHeight targetWidth $@

我甚至不确定这样做是否正确,所以任何建议都会有所帮助。

您可以使用--resampleWidth-Z:

sips --resampleWidth 262 "$@" # make smaller or larger so that the width is 262 px
sips -Z 262 "$@" # make smaller or larger so that the longer sides are 262 px

如果你想防止放大较小的图像,看看这个答案,或者使用ImageMagick。我认为如果没有额外的锐化,小采样通常会使图像看起来太模糊,但是ImageMagick也允许选择不同的重采样过滤器:

mogrify -filter lanczos2 -resize '262>' "$@"

mogrifyconvert的一个版本,可以就地修改图像。lanczos2 (2-lobed Lanczos)使图像的清晰度略低于lanczos (3-lobed Lanczos,它在某些时候被用作默认的缩小过滤器)。262>将大于262像素的图像调整为262像素。

相关内容

  • 没有找到相关文章

最新更新