görüntü kırpma için komut dosyası

3 Cevap php

Ben (yaklaşık 1000) görüntüleri (printscreens) çok var, ve ben (tüm görüntüleri tam görüntüde aynı bölgede olan kırpılmış) Bu görüntü kırpma gerekir.

Ben bu php nasıl yapabilirim? Ya da belki GIMP Bunu yapmak için bazı makro komut desteklemektedir?

Şimdiden teşekkürler.

3 Cevap

Sen GD image functions PHP kullanarak bunu yapabilirsiniz.

Script böyle bir şey (test değil) görünebilir:

$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());
}

Greg ve n1313 önerdiği gibi GD kullanmanın dışında, aynı zamanda, örneğin, bunun için ImageMagick kullanabilirsiniz Greg'in çözeltisine benzer, fakat

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

(Yani görüntü açılamaz) veya cropImage ve WriteImage false döndü (görüntü kırpılmış edilemez veya yazılı olamaz) yeni görüntü oluştururken özel durumlar için kontrol edebilirsiniz.

PHP ile bunu yapmak için bir GD image manipulation library gerekir. Sonra ihtiyacınız ne olursa olsun bir şekilde görüntü işlemek için size görüntü ve birçok GD fonksiyonları kırpmak için imagecopy() işlevini kullanabilirsiniz.