Php 替换图像颜色并保持100%alpha背景

Php 替换图像颜色并保持100%alpha背景,php,gd,Php,Gd,我有一个透明背景的png。前景是单一颜色。我想在保留100%alpha背景的同时更改此单色 下面的代码不起作用,它在我使用gif时起作用。然而,当我将gif改为png,然后添加alpha内容时,颜色的变化就消失了 如果我添加imagetruecolortopalette($im,false,255)颜色已更改,但alpha丢失 有人能告诉我哪里出了问题吗 $imgname = "block.png"; $im = imagecreatefrompng($imgname); imagealphab

我有一个透明背景的png。前景是单一颜色。我想在保留100%alpha背景的同时更改此单色

下面的代码不起作用,它在我使用gif时起作用。然而,当我将gif改为png,然后添加alpha内容时,颜色的变化就消失了

如果我添加
imagetruecolortopalette($im,false,255)颜色已更改,但alpha丢失

有人能告诉我哪里出了问题吗

$imgname = "block.png";
$im = imagecreatefrompng($imgname);
imagealphablending($im, false); 

$index = imagecolorclosest ($im, 153,153,153); // get Grey COlor
imagecolorset($im,$index,0,0,0); // SET NEW COLOR

imageAlphaBlending($im, true);
imageSaveAlpha($im, true);
$imgname = "result.png";
imagepng($im, $imgname ); // save image as gif
imagedestroy($im);
编辑::这是一个足够简单的脚本


当我使用gif时,颜色发生了变化,新图像被保存。当a更改为.png时。颜色不再改变,因此原始图像在脚本中的传递保持不变。

它是PNG-24吗?据我所知,这只适用于PNG-8。也许你可以尝试使用定义“不工作”和“它坏了”。将“坏了”定义为“停止工作”是没有用的我不知道怎么说得更清楚。。。脚本做了一件事。。。它改变了一种颜色。。。它与gif一起工作。。。它不适用于png…此方法仅在使用调色板(颜色数量)的图形文件时有效