Как в PHP GD преобразовать изображение truecolor в палитру без потери ничего цвета. С imagetruecolortopallete
это не работает. У меня есть функция, которая просматривает все цвета и фильтрует их (например, оттенки серого). и Он не сохраняет все цвета, как, например, на этом изображении Lamborghini-
Изображение
Это мой код
$im = imagecreatefrompng("lamborghini.png");
$degrees = 0;
$img = imagecreatetruecolor(imagesx($im), imagesy($im));
imagecopy($img, $im, 0, 0, 0, 0, imagesx($im), imagesy($im));
imagetruecolortopalette($img, true, 256);
$t = imagecolorstotal($img);
for ($i = 0; $i < $t; $i++) {
$rgb = imagecolorsforindex($img, $i);
$hsv =rgbtohsv($rgb['red'], $rgb['green'], $rgb['blue']);
$h = $degrees;
$s = $hsv['s'];
$v = $hsv['v'];
while ($h > 360) {$h -= 360;};
$nrgb = hsvtorgb($h, $s, $v);
imagecolorset($img, $i, $nrgb['r'], $nrgb['g'], $nrgb['b']);
}
imagecopy($im, $img, 0, 0, 0, 0, imagesx($img), imagesy($img));
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
И это выглядит так
Вы можете видеть цвет теряется. Есть ли какое-нибудь решение?
Также я не думаю, что это связано с моим кодом, но как imagetruecolortopalette
выводит это