2011-03-03 60 views
1

我有一个转换真彩色图像调色板图像,如果不同颜色的图像的数量小于或等于256ImageTrueColorToPalette失去颜色

在我的测试情况下,PHP脚本,我有一个形象,包含79种颜色。在它上面运行ImageTrueColorToPalette而没有抖动并且$ ncolors参数设置为79之后,我有一个只有15种颜色的图像。我甚至在将它转换为调色板后尝试运行ImageColorMatch,并且我仍然只有15种颜色。如何在PHP中使用GD,如何将我的真彩色图像转换为调色板图像而不会丢失所有这些颜色?

回答

1

看来我可以通过使用ImageCreate创建调色板图像,然后将真彩色图像复制到该图像,将真彩色图像转换为调色板图像。这产生比ImageTrueColorToPalette好得多的结果。

为什么ImageTrueColorToPalette给了我一个蹩脚的图像,我不太确定,但这似乎是一个适当的解决方法。

$palette = ImageCreate($width, $height); 
ImageCopy($palette, $truecolor, 0, 0, 0, 0, $width, $height);