2013-02-23 92 views
5

我有一個PNG,我試圖合併它的頂部的JPG。用下面的代碼合併一個JPG格式的PNG,並保留透明度與PHP

$dest = imagecreatefromjpeg("example.jpg"); 
$src = imagecreatefrompng("example.png"); 

imagealphablending($dest, false); 
imagesavealpha($dest, true); 

imagealphablending($src, true); 

imagecopymerge($dest, $src, $src2x, $src2y, 0, 0, $src2w, $src2h, 100); 

header('Content-Type: image/png'); 
imagepng($dest, "user/".$imei."/".$picCount."_m"); 

imagedestroy($dest); 
imagedestroy($src); 

結果在下面

enter image description here

我也嘗試了suggestion from a similar question其中所說的用「imagecopymerge」的「imagecopyresampled」 isntead但是當我做了聖誕老人的帽子沒根本不會出現。

我需要更改哪些內容才能使聖誕老人帽子在合併時保持透明度?

回答

9

需要同時使用'imagecopyresampled'的解決方案。以及從發佈的源代碼中移除第4行和第5行。

imagealphablending($dest, false); 
imagesavealpha($dest, true); 

下面是完整的工作版本

$dest = imagecreatefromjpeg("example.jpg"); 
$src = imagecreatefrompng("example.png"); 

imagecopyresampled($dest, $src, $src2x, $src2y, 0, 0, $src2w, $src2h, $src2w, $src2h); 

header('Content-Type: image/png'); 
imagejpeg($dest, "user/".$imei."/".$picCount."_m.jpeg"); 

imagedestroy($dest); 
imagedestroy($src); 

enter image description here

+1

感謝張貼您的解決方案。爲我節省了很多麻煩。 :) – Puzbie 2017-09-30 10:41:08