使用imagick php扩展图像裁剪选定的位置

时间:2012-09-15 17:07:47

标签: php imagick

有没有办法在PHP imagick扩展中裁剪选择位置的图像?

我使用php 5.3+的imagick php扩展。

如果有人知道如何裁剪如下位置,请与我分享

我有一个方形为500px的图像,我想将顶部200px(左侧)裁剪到底部400px右侧。

请查看下面的示例。

示例..

Example original

输出..

Output should look like this

1 个答案:

答案 0 :(得分:3)

我希望这段代码会有所帮助。

$mask = new Imagick();
$mask->newimage(500, 500, new ImagickPixel('transparent'));
$mask->setimageformat('png');
$polygon = new ImagickDraw();
$polygon->setFillColor(new ImagickPixel('black'));
/*
  You didn't specified from where to start the crop and where to end it, 
  so just assumed those values
*/
$polygon->polygon(array(
    array('x' => 200, 'y' => 0),
    array('x' => 400, 'y' => 0),
    array('x' => 450, 'y' => 500),
    array('x' => 250, 'y' => 500),
    array('x' => 200, 'y' => 0),
));
$mask->drawimage($polygon);
$image = new Imagick();
$image->readimage("Your source image path :) ");
$image->setImageFormat('png');
$image->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$image->setImageMatte(true);
$image->compositeimage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);
$image->trimimage(0);
header('Content-Type: image/png');
echo $image;
die();