在mac上使用sips命令修剪图像的底部

时间:2013-11-08 20:10:58

标签: macos terminal sips

我想为osx编写一个批处理命令脚本,它将裁掉图像的底部。这可能是使用啜饮吗?

我有一堆图像640 x 1136,我想裁剪它们(不缩放或调整大小)到640 x 960.当裁剪图像时,我希望删除图像的底部并使顶部保持不变。基本上,我只是想关闭图像的底部。

我有这个,但它从图像顶部和底部裁剪。

sips --cropToHeightWidth 640 960

4 个答案:

答案 0 :(得分:7)

看起来不可能。谢谢你们。

答案 1 :(得分:3)

我只花了2年的时间才想到这一点......但你可以用GD库来实现它,它实际上包含在标准的内置OSX PHP解释器中(所以不需要安装任何包):

#!/usr/bin/php -f

<?php
   $im = imagecreatefromjpeg("image.jpg");
   $crop_area = array('x'=>0,'y'=> 0,'width'=>640,'height'=>960);
   $result = imagecrop($im, $crop_area);
   imagejpeg($result,"result.jpg");
?>

要从终端进行呼叫,您可以将其保存在一个名为chopper的文件中,然后使文件可执行,如下所示:

chmod +x chopper

然后你可以输入:

来运行它
./chopper

或在Finder中双击它。

我想你会想要打开文件名的参数以及要保存的文件名和尺寸,但是你明白了。

答案 2 :(得分:3)

您也可以使用翻转模式两次。

sips --flip vertical image.jpg
sips --cropToHeightWidth 640 960
sips --flip vertical image.jpg

这已经为我做了。

答案 3 :(得分:0)

由于sips无权执行此操作,因此该解决方案使用PHP脚本,然后使用Shell命令来调用它。您可以使用此方法批处理文件。我使用的是Mac,但该解决方案可能适用于具有内置PHP解释器和GD库的Linux和Unix。

我的解决方案是对@MarkSetchell答案的改进,因为他的代码无法在较旧的Apple OS(例如Snow Leopard和Lion)上运行。我的Lion机器具有PHP 5.3.15,其内置的GD库没有imagecrop函数,该函数仅在PHP 5.5.0或更高版本中可用。在这种情况下,您会收到错误消息:

Fatal error: Call to undefined function imagecrop() in Command line code on line 1

要检查您的PHP安装,请运行php -v

PHP 5.3.15 with Suhosin-Patch (cli) (built: Jul 31 2012 14:49:18) 

对于使用旧机器的用户,请使用imagecopy()函数。

代码中的关键行:

imagecopy($dest_image,$src_image,0,0,$new_x,$new_y,$new_width,$new_height);

My PHP script to crop images使用最基本的内置命令。

下载上面的脚本,然后通过传递自己的裁剪任务参数在您的Shell中运行它:

php -f ./crop_image.php $infile $outfile $x $y $width $height

其中(x,y)是裁剪矩形的起点。

要运行批处理,请使用控件结构:

j=1; for i in $(ls *.png); do php crop_image.php $i ./cropped/$j.png 10 50 720 980; ((j++)); done

上面的单行命令在当前目录中搜索所有扩展名为“ png”的文件,将图像从左上角(10,50)裁剪到右下角(730,1030),然后保存“已裁剪”文件夹中的所有文件。

@MarkSetchell:我注意到您在“ shebang”中附加了“ -f”:#!/usr/bin/php -f。你为什么要这样做?