用于裁剪图像的脚本

时间:2009-09-02 09:00:04

标签: php image gd imagemagick crop

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

我怎么能在PHP中这样做?或者也许GIMP支持一些宏脚本来做到这一点?

提前致谢。

3 个答案:

答案 0 :(得分: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(图像无法裁剪或无法写入)。

答案 1 :(得分: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());
}

答案 2 :(得分:1)

要使用PHP执行此操作,您需要GD image manipulation library。然后你可以使用imagecopy()函数裁剪你的图像和许多其他GD函数来以任何你需要的方式操作图像。