2009-09-02 230 views
1

我有很多(大约1000)图像(打印屏幕),我需要裁剪这些图像(所有裁剪图像在完整图像中的相同区域)。裁剪图像的脚本

我该如何在php中做到这一点?或者,也许GIMP支持一些宏脚本来做到这一点?

在此先感谢。

回答

2

您可以使用GD image functions在PHP中完成。

你的代码可能看起来是这样的(未测试):

$it = new RecursiveDirectoryIterator('./screenshots'); 
foreach ($it as $file) 
{ 
    if (!preg_match('/\.jpe?g$/i', $file->getFilename())) 
     continue; 

    $src = imagecreatefromjpeg($file->getRealPath()); 
    $dest = imagecreatetruecolor(1000, 1000); 

    imagecopyresampled($desc, $src, 0, 0, X_OFFSET, Y_OFFSET, 1000, 1000, WIDTH, HEIGHT); 
    imagejpeg($dest, './resized/' . $file->getFilename()); 
} 
3

除了使用GD,正如Greg和n1313提出的那样,您也可以使用ImageMagick作为例如。类似Greg的解决方案,但与

$original_image = new Imagick($file->getRealPath()); 
$dest_image = $original_image->clone(); 
$dest_image->cropImage($width, $height, $x, $y); 
$dest_image->writeImage('./resized/' . $file->getFilename()); 

创建新的图像时,您可能会检查是否有异常(即图像无法打开)或cropImage和writeImage返回false(图像不能被裁剪或不能写入)。