我正在尝试编写一个自动应用程序,将采取图像文件并将其大小调整到指定的宽度,但保持原始图像文件的高度/宽度比。
我一直在尝试在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>' "$@"
mogrify
是convert
的一个版本,可以就地修改图像。lanczos2
(2-lobed Lanczos)使图像的清晰度略低于lanczos
(3-lobed Lanczos,它在某些时候被用作默认的缩小过滤器)。262>
将大于262像素的图像调整为262像素。