16

我想为 osx 编写一个批处理命令脚本,它将裁剪图像的底部。可以用sips吗?

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

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

sips --cropToHeightWidth 640 960
4

4 回答 4

8

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

于 2013-11-20T00:57:54.200 回答
5

我只花了 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");
?>

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

chmod +x chopper

然后您可以通过键入以下内容来运行它:

./chopper

或在 Finder 中双击它。

我猜你想让它接受文件名的参数来打开和保存的文件名和尺寸,但你明白了。

于 2016-02-01T10:55:31.307 回答
1

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

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

这对我来说已经完成了。


更新

就像评论说的那样,这个解决方案不再起作用。对此感到抱歉。

于 2018-04-03T16:12:51.500 回答
0

Mark Setchell 的回答不适用于较旧的 Apple 系统,例如 Snow Leopard 和 Lion,您将收到此错误:

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) 

我的 Lion 机器有 PHP 5.3.15,其内置的 GD (GIF/Graphics Draw) 库没有该imagecrop功能,该功能仅适用于 PHP 5.5.0 或更高版本。因此,我使用该imagecopy()功能代替imagecrop().

该解决方案应该适用于具有内置 PHP 解释器和 GD 库的 Linux 和 Unix 机器。

我的图像裁剪 PHP 脚本中的关键行是:

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

将裁剪任务的参数传递给脚本,其中 (x,y) 是裁剪矩形的起点:

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

示例:在当前目录中搜索所有带有“png”扩展名的文件,从左上角(10,50)到右下角(730,1030)裁剪每个图像,然后将所有输出文件保存在“裁剪”文件夹。

j=1; for i in $(ls *.png); do php crop_image.php $i ./cropped/$j.png 10 50 720 980; ((j++)); done
于 2020-04-03T16:53:22.433 回答