У меня есть 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);