2009-09-02 162 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(圖像不能被裁剪或不能寫入)。