ImageTrueColorToPalette проигрывает цвета

У меня есть PHP-скрипт, который преобразует истинные цветные изображения в палитры изображений, если количество разных цветов на изображении меньше или равно 256.

В моем тестовом примере у меня есть изображение, содержащее 79 цветов. После запуска ImageTrueColorToPalette на нем без сглаживания и параметра $ ncolors, установленного на 79, у меня есть изображение, в котором есть только 15 цветов. Я даже попытался запустить ImageColorMatch на нем после преобразования его в палитру, и я все еще получаю только 15 цветов.

Используя GD в PHP, как я могу преобразовать изображение с истинным цветом в изображение палитры без потери всех этих цветов?

Кажется, я могу преобразовать истинное цветное изображение в изображение палитры, создав изображение палитры с помощью ImageCreate а затем скопировав изображение с истинным цветным изображением. Это дает гораздо лучшие результаты, чем ImageTrueColorToPalette .

Почему ImageTrueColorToPalette дает мне дерьмовый образ, я не уверен, но это похоже на адекватное обходное решение.

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