Мне нужен «идентификатор цвета» для цвета текста, который мне нужно вставить на изображение с помощью 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
, не упомянутом в документации.
Поскольку идеальный цвет не был обязательным требованием, это, по сути, и есть ответ, который я искал. Я не публикую это как ответ, потому что это не на самом деле ответ на вопрос, и мне все еще интересно знать, существует ли фактический ответ.