想象复合,透明图像上的运动模糊

时间:2013-02-23 16:34:45

标签: php imagemagick imagick

我正在尝试构建多个现有图像的图像,并在其上应用运动模糊。我正在使用透明画布来绘制所有图像。结果如下:enter image description here

如您所见,模糊部分不会离开单个图像的不透明部分。我怎么能让它们在这些部分之外模糊呢?

更新 这也是我的意思是模糊边缘:

enter image description here

这是我的代码:

header("Content-Type: image/png");

$images = array("a.png","b.png","c.png");

$canvas = new Imagick();
$canvas->newImage(128*3, 128, new ImagickPixel("rgba(0,0,0,0)"));
$canvas->setImageFormat("png");

for($i=0; $i<count($images); $i++)
{
    $img = new Imagick($images[$i]);
    $canvas->compositeimage($img, Imagick::COMPOSITE_DEFAULT, $i*128, 0);
}
$canvas->motionblurimage(100, 40, 90);

echo $canvas;

感谢您提供任何帮助或说明如何解决此问题!

1 个答案:

答案 0 :(得分:3)

尝试添加频道参数:

$canvas->motionblurimage(100, 40, 90, Imagick::CHANNEL_ALL);

我认为默认通道设置会将效果局限于不透明的部分。

当我使用那条精确的线条时,图像变得非常模糊 - 可能比你想要的更模糊。前两个值可能需要减少,甚至可能减半。