Для определенного 8-битного изображения imagecolorallocate () возвращает false для большинства цветов - PullRequest
0 голосов
/ 04 июля 2019

Мне нужен «идентификатор цвета» для цвета текста, который мне нужно вставить на изображение с помощью imagettftext (). Я обнаружил, что для некоторых изображений imagecolorallocate может возвращать false. Но нигде не указано, почему это или какие цвета будут причиной этого. 8 бит - хороший индикатор, но я не могу перейти на более высокое значение.

Метод проб и ошибок Я нашел число, которое работает и дает искомый цвет (между 0 - 255). Это не совсем подходящее решение, потому что всякий раз, когда я меняю изображение, мне снова приходится искать номер, который работает.

$main_text_font_color = imagecolorallocate($certificate,
        $font_color['red'],
        $font_color['green'],
        $font_color['blue']
);
imagettftext($certificate, $text_size, 0, $text_h, $text_start, $main_text_font_color, $font_url, $text);

Итак, я хотел бы знать, есть ли способ предсказать, какие цвета вызовут ложное, а какие будут работать.

Обновление: Поэтому я не нашел ответа на вопрос, но благодаря @misorude я обратил внимание на первый комментарий на странице документации imagecolloralocate и использую обходной путь, упомянутый в комментарии. imagecolorclosest() дает действительно хорошее приближение цвета, который я искал. Комментарий jahservant13 также дает некоторую полезную справочную информацию о imagecolloralocate, не упомянутом в документации.

Поскольку идеальный цвет не был обязательным требованием, это, по сути, и есть ответ, который я искал. Я не публикую это как ответ, потому что это не на самом деле ответ на вопрос, и мне все еще интересно знать, существует ли фактический ответ.

...