我想为osx编写一个批处理命令脚本,它将裁掉图像的底部。这可能是使用啜饮吗?
我有一堆图像640 x 1136,我想裁剪它们(不缩放或调整大小)到640 x 960.当裁剪图像时,我希望删除图像的底部并使顶部保持不变。基本上,我只是想关闭图像的底部。
我有这个,但它从图像顶部和底部裁剪。
sips --cropToHeightWidth 640 960
答案 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
。你为什么要这样做?