@savage_me

Как преобразовать картинку в другую, в которой будут только определенные цвета?

$img = imagecreatetruecolor($width,$height);

// Задаю палитру для нового изображения. Ожидаю, что полученная картинка будет состоять только из трех этих цветов.
imageColorAllocate($img, 255, 255, 255);
imageColorAllocate($img, 0, 0, 0);
imageColorAllocate($img, 128, 128, 128);

// Создаю изображение из исходного
$img2 = imageCreateFromJpeg($filename);

// Объединяю исходное изображение и изображение на основе трех цветов.
imageCopyMerge($img, $img2, 0, 0, 0, 0, $width, $height, 100);


В итоге $img создается, но не из трех цветов, а из большего количества. Где ошибка? И самое главное, как получить изображение из исходного изображения на основе трех нужных цветов?
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 2
@U235U235
Надеюсь, на выходе у вас не jpeg?
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Да. Если ты сохраняешь в JPEG то он тебе подкинет свинью. Тк работает не с дискретным а с непрерывным (синусно-косинусным) представлением маленьких фрагментов картинки.

Реально тебе нужна гарантия что destination будет всегда в форматах GIF/PNG т.к только они гарантируют точное соотвествие цвета на входе и на выходе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы