2011-04-12 92 views
0

我有一个PNG透明背景。前景是单一的颜色。我想在保留100%alpha背景的同时更改此单一颜色。替换图像颜色并保持100%alpha背景

下面的代码不起作用,它有效时,我有一个gif。但是,当我将gif更改为png时,添加了阿尔法填充颜色变化。

如果我加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时,颜色改变,新图像被保存。当更改为.png时。颜色不再改变,因此原始图像不变地通过脚本。

+0

定义“不起作用”和“它坏了”。 – 2011-04-12 09:37:01

+0

我已更新问题 – 2011-04-12 09:43:11

+0

将“分解”定义为“停止工作”没有用。 :) – 2011-04-12 09:45:11

回答

0

它是PNG-24吗?据我所知,这只适用于PNG-8。也许你可以尝试使用Imagick