Php 如何从透明图像创建图像颜色?

Php 如何从透明图像创建图像颜色?,php,image,colors,gd,transparent,Php,Image,Colors,Gd,Transparent,我正在构建一种系统,它只是从其他图像创建动态图像。我使用:imagecreatefromstring(文件获取内容(“小丑”avatar.png))创建图像并成功输出;但是,它会弄乱透明区域上的所有颜色 查看原始图像: 下面是PHP文件的结果: 以下是源代码,只有几行: <?php $im = imagecreatefromstring(file_get_contents("clown_avatar.png")); //$bg = imagecolorallocate($im,0,0

我正在构建一种系统,它只是从其他图像创建动态图像。我使用:
imagecreatefromstring(文件获取内容(“小丑”avatar.png))
创建图像并成功输出;但是,它会弄乱透明区域上的所有颜色

查看原始图像:

下面是PHP文件的结果:

以下是源代码,只有几行:

<?php

$im = imagecreatefromstring(file_get_contents("clown_avatar.png"));
//$bg = imagecolorallocate($im,0,0,0); doesn't effect
Header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

?>

原因是您正在丢弃alpha层。通过这样做,图像中原本不可见的部分现在变得可见


相反,您要做的是使用alpha加载原始PNG图像,并使用将其复制到所需图像(仅为背景色)上。

好的,如何仍然使用imagecreatefromstring()执行此操作,因为我必须从不同的扩展名创建图像,这是最简单的方法。相反,解析MIME类型并分别处理每个类型。如果编程工作量太大,请分别处理PNG和GIF。感谢您的帮助:)