2013-02-23 67 views
2

我試圖編寫多個現有圖像的圖像,並在其上應用運動模糊。我使用透明畫布繪製所有圖像。結果如下:enter image description hereImagick複合透明圖像上的運動模糊

正如您所看到的,模糊的部分不會留下單個圖像的不透明部分。我怎麼能讓他們在這些部分之外模糊?

更新: 這就是我所說的太模糊邊緣的意思是:

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; 

感謝任何幫助或方向如何解決這個!

+0

我不知道我明白你要做什麼樣的效果。你的意思是你想讓邊緣變得模糊嗎?像這個頁面上的第8步:http://www.webdesign.org/photoshop/text-effects/motion-blur.5059.html但可能不太極端? – frostyterrier 2013-02-24 11:42:53

+0

這正是我想要做的。對不起,如果不清楚,我更新這個問題。 – 2013-02-24 11:51:22

回答

3

嘗試添加參數用於通道:

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

我認爲缺省信道設置使侷限於非透明部分的效果。

當我使用該確切線條時,圖像變得非常模糊 - 可能比您想要的更模糊。前兩個值可能需要減少,甚至可能減半。

+0

謝謝,固定它:) – 2013-02-24 12:07:34