2011-07-21 78 views
1

我試圖複製一個具有陰影(即alpha通道)和透明背景的PNG圖像。但是,生成的圖像以黑色繪製陰影和透明背景。我嘗試了imagecopyimagecopymerge;沒有得到有效的結果,這與原始圖像不一樣。複製帶陰影和透明背景的圖像

Preview of the images.

$src = imagecreatefrompng('img_box3-bg.png'); 

/* Using imagecopy. */ 
$dest = imagecreatetruecolor(116, 100); 
imagecopy($dest, $src, 0, 0, 0, 0, 116, 100); 
imagepng($dest, 'img_box3-bg.imagecopy.png'); 
imagedestroy($dest); 

/* Using imagecopymerge. */ 
$dest2 = imagecreatetruecolor(116, 100); 
imagecopymerge($dest2, $src, 0, 0, 0, 0, 116, 100, 100); 
imagepng($dest2, 'img_box3-bg.imagecopymerge.png'); 
imagedestroy($dest2); 

imagedestroy($src); 

幫助?事先感謝。

回答

3

事情是這樣的:

$src = imagecreatefrompng('img_box3-bg.png'); 

/* Using imagecopy. */ 
$dest = imagecreatetruecolor(116, 100); 

// this is new 
imagesavealpha($dest, true); 
$transparent = imagecolorallocatealpha($dest, 0, 0, 0, 127); 
imagefill($dest, 0, 0, $transparent); 

imagecopy($dest, $src, 0, 0, 0, 0, 116, 100); 

header('Content-Type: image/png'); 
imagepng($dest); 
imagedestroy($dest); 
+0

我認爲你的意思'$ dest',而不是在上面的代碼片段'$ img'。這不幸的是並沒有做到這一點。再看一下鏈接/預覽頁面:我已經添加了使用建議的方法完成的新圖像。 – moey

+0

@ Siku-Siku.Com改變了這個例子,這是在我的測試機器上工作。希望能幫助到你! – Yoshi

+0

燦爛!它像一個魅力。非常感謝。 – moey