Алгоритм, чтобы получить лучший цвет текста - PullRequest
8 голосов
/ 03 ноября 2011

Я ищу алгоритм для получения наилучшего цвета текста (наиболее приятного для глаз) из заданного цвета фона.

Есть идеи?

Ответы [ 2 ]

12 голосов
/ 03 ноября 2011

«Лучший цвет» очень субъективен и зависит от контекста. Это зависит от того, какой эффект вы хотите: если вы хотите максимально возможный контраст, ищите дополнительные цвета (это даст вам красный на зеленом, желтый на синем и т. Д.). Если вы хотите, чтобы цвета были «похожими», ищите аналогичные гармонии. Если вы хотите выбрать между черным и белым только, измерьте яркость (хомяк опубликовал очень хорошую формулу для этого).

Куда бы вы ни пошли, цветовая модель HSV - это ключ.

Получение дополнительных или аналогичных цветов тривиально (например, hue_text = (hue_bg + 180) % 360 ИЛИ hue_text = (hue_bg + 30) % 360).

Вы также можете поэкспериментировать со значением (яркостью) и насыщенностью для лучшей контрастности. Например, v_text = 1 - v_bg может дать вам темный текст на светлом фоне и наоборот (не пропустите средние тона!). Он не должен быть линейным - вы также можете использовать пошаговую функцию, например: if v_bg < 0.5 then v_text = 1 else v_text = 0 или if s_bg < 0.5 then s_text = 1 else s_text = 0 (яркие на бледном).

Это всего лишь несколько подсказок. Одним словом: Это зависит!

Google для теории цвета и цветовых гармоний. Некоторые ссылки:

http://www.tigercolor.com/color-lab/color-theory/color-harmonies.htm

http://www.colormatters.com/color-and-design/basic-color-theory

6 голосов
/ 03 ноября 2011

Нет лучшего для всех.

Скажем, если вам нужно убедиться, что текст будет легко читаемым, мне поможет следующая простая формула:

textColor = brightness(backColor) > 0.5 ? black : white;

где яркость определяется как

brightness(R,G,B) = 0.299*R + 0.587*G + 0.114*B

(есть несколько определений для «яркости», я использовал это, но я думаю, что любой будет работать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...