2

我正在尝试合成多个现有图像的图像,并在其上应用运动模糊。我正在使用透明画布来绘制所有图像。结果如下:在此处输入图像描述

如您所见,模糊部分不会留下单个图像的不透明部分。我怎样才能让它们在这些部分之外变得模糊?

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

在此处输入图像描述

这是我的代码:

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;

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

4

1 回答 1

3

尝试为通道添加参数:

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

我认为默认通道设置使效果仅限于非透明部分。

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

于 2013-02-24T12:00:50.250 回答