我正在尝试构建多个现有图像的图像,并在其上应用运动模糊。我正在使用透明画布来绘制所有图像。结果如下:
如您所见,模糊部分不会离开单个图像的不透明部分。我怎么能让它们在这些部分之外模糊呢?
更新 这也是我的意思是模糊边缘:
这是我的代码:
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;
感谢您提供任何帮助或说明如何解决此问题!
答案 0 :(得分:3)
尝试添加频道参数:
$canvas->motionblurimage(100, 40, 90, Imagick::CHANNEL_ALL);
我认为默认通道设置会将效果局限于不透明的部分。
当我使用那条精确的线条时,图像变得非常模糊 - 可能比你想要的更模糊。前两个值可能需要减少,甚至可能减半。