PHP图像创建-不透明度问题

PHP图像创建-不透明度问题,php,html,transparency,Php,Html,Transparency,我需要帮助正确设置不透明度。基本上,我有一个带有特定用户定义颜色的横幅(矩形)。在此基础上,我想插入一个旗帜的png图像,它是圆形的,背景是透明的 但是,当我覆盖它们时,它们仍然显示白色背景,应该是透明的。我试图保存alpha并在stackoverflow上运行了几个线程,但没有任何效果 这是我的密码: $width = 800; $height = 150; $png_image = imagecreate($width, $height); imagealphablending( $png

我需要帮助正确设置不透明度。基本上,我有一个带有特定用户定义颜色的横幅(矩形)。在此基础上,我想插入一个旗帜的png图像,它是圆形的,背景是透明的

但是,当我覆盖它们时,它们仍然显示白色背景,应该是透明的。我试图保存alpha并在stackoverflow上运行了几个线程,但没有任何效果

这是我的密码:

$width = 800;
$height = 150;

$png_image = imagecreate($width, $height);
imagealphablending( $png_image, true );
imagesavealpha( $png_image, true );
$bg = imagecolorallocate($png_image, hex2rgb($color_schemes[$design]['900'])[0], hex2rgb($color_schemes[$design]['900'])[1], hex2rgb($color_schemes[$design]['900'])[2]);

$icon1 = imagecreatefrompng('../../imgs/flags/big/us.png');
imagealphablending( $icon1, true );
imagesavealpha( $icon1, true );
imagecopy($png_image, $icon1, 10, 10, 0, 0, 80, 80);
图像中还有一些其他内容,但与此问题无关。上述结果如下:


即使PNG图像在标志周围是透明的,您也可以看到标志被白色背景包围。

使用
imagecreatetruecolor()
而不是
imagecreate()

尽管php文档对此并不清楚,但是,
imagecreatetruecolor()
创建了一个RGBA图像,这是具有alpha透明度所必需的

PHP文档

注 如果出于某种原因您决定直接创建而不是分配它们,则颜色索引是32位ARGB。这其实很方便

附加:ARGB颜色函数
//返回32位ARGB颜色索引
//输入红色(0-255)、绿色(0-255)、蓝色(0-255)、阿尔法(0-127)
函数makeColor($r=0,$g=0,$b=0,$a=0){

return($a)中的任何答案对您有帮助吗?您是否可以添加一个指向相关徽标图像的链接?
// return 32bit ARGB color index
// input red (0-255), green (0-255), blue(0-255), alpha (0-127)
function makeColor($r=0, $g=0, $b=0, $a=0) {
   return ($a << 24) + ($r << 16) + ($g << 8) + $b;
}