2011-11-21 46 views
2

請考慮下面的代碼片段,其中我試圖創建一個不透明的紅色正方形圖像,淡出到大部分透明的藍色正方形中。模糊PHP/Imagick圖像中的alpha通道

$image = new Imagick(); 
$image->newImage(300, 300, '#0000ff22'); 

$draw = new ImagickDraw(); 
$draw->setFillColor('#ff0000ff'); 
$draw->rectangle(100, 100, 200, 200); 

$image->drawImage($draw); 
$image->blurImage(25,23); 

$image->setImageFormat("png"); 
header("Content-Type: image/png"); 
echo $image; 

輸出反而看起來像紅色和藍色通道變得模糊,但不是alpha通道。我嘗試過手動指定CHANNEL_ALPHA到blurImage的第三個參數,但它沒有效果。我正在使用ImageMagick的6.6.2-6版本(並且PHP擴展是針對該版本編譯的)。

this

+0

模糊alpha將沒有任何區別,因爲一切都在圖像內 - 它不會模糊紅色區域對藍色,只有整個圖像沒有任何反應。 – Synchro

回答

0

這看起來像什麼,我想你問:

<?php 
$image = new Imagick(); 
$image->newImage(300, 300, '#0000ff22'); 

$draw = new ImagickDraw(); 
$draw->setFillColor('#ff0000ff'); 
$draw->rectangle(100, 100, 200, 200); 

$image->drawImage($draw); 
$image->blurImage(25,23, imagick::COLOR_RED); 

$image->setImageFormat("png"); 
header("Content-Type: image/png"); 
echo $image; 
?> 

這隻能是因爲我們正在模糊的東西是純紅色;這不是一個通用的解決方案。更通用的解決方案會創建一個單獨的圖像,將其模糊,然後將其合成到背景上。