在PHP中合并两个图像时不保留图像透明度

时间:2012-06-28 12:21:05

标签: php gd

当使用其他帖子中的示例尝试将其中包含透明部分的一个PNG与另一个非透明PNG合并时,前景PNG的透明度将丢失,默认为白色。

到目前为止的代码:

$width = 349;
$height = 250;

$base_image = imagecreatefrompng($_GET['bg']);
$top_image = imagecreatefrompng($_GET['fg']);
$merged_image = "merged.png";

imagesavealpha($top_image, true);
imagealphablending($top_image, true);

imagecopy($base_image, $top_image, 0, 0, 0, 0, $width, $height);
imagepng($base_image, $merged_image);

有人可以提出我可能出错的地方吗?

Coming out like this 像这样出来 Should look like this 应该看起来像这样

2 个答案:

答案 0 :(得分:0)

Can PNG image transparency be preserved when using PHP's GDlib imagecopyresampled?

复制

代码应该是这样的:

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

答案 1 :(得分:0)

 $image = imagecreatefrompng($_GET['bg']);
 $frame = imagecreatefrompng($_GET['fg']);

 imagealphablending($frame,true);
 imagecopymerge($image, $frame, 0, 0, 0, 0, 0, 100, 100);

 # Save the image to a file
 imagepng($image, 'file-xyz.png');