Автоматическое определение цвета такста.
От: RadmirT Россия  
Дата: 08.06.10 05:21
Оценка:
Добрый день,
возникла следующая задача, есть некий объект для которого задается цвет фона, и надпись, нужно определить цвет надписи, чтобы на фоне объекта она выглядела наиболее констрасной, при этом возможное количство цветов надписи ограничено максимум 5 цветами, а цвет фона может быть любой.
Подскажите как можно решить?
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
Re: Автоматическое определение цвета такста.
От: Centaur Россия  
Дата: 08.06.10 07:14
Оценка:
Здравствуйте, RadmirT, Вы писали:

RT>возникла следующая задача, есть некий объект для которого задается цвет фона, и надпись, нужно определить цвет надписи, чтобы на фоне объекта она выглядела наиболее констрасной, при этом возможное количство цветов надписи ограничено максимум 5 цветами, а цвет фона может быть любой.


Каким образом задаётся цвет фона?

Пусть у нас есть цвет фона (r, g, b) и возможные цвета надписи [(r_i, g_i, b_i)|i=1..n].

Посчитаем для всех цветов яркость: (грубо) y = 0.299*r + 0.587*g + 0.114*b, y_i = 0.299*r_i + 0.587*g_i + 0.114*b_i.

Контрастность цвета i на фоне будет определяться разностью y_i и y: ищем i такое, что |y_i — y| = max.

В частности, можно брать чёрный, если y > 0.5, и белый, если y < 0.5.
Re: Автоматическое определение цвета такста.
От: Кодт Россия  
Дата: 08.06.10 08:05
Оценка:
Здравствуйте, RadmirT, Вы писали:

RT>возникла следующая задача, есть некий объект для которого задается цвет фона, и надпись, нужно определить цвет надписи, чтобы на фоне объекта она выглядела наиболее констрасной, при этом возможное количство цветов надписи ограничено максимум 5 цветами, а цвет фона может быть любой.


IMHO,
В модели HSV нужно взять цвет, наиболее удалённый в первую очередь по V (яркость), во вторую — H (оттенок), в третью — S (насыщенность).
Как перевести из RGB в HSV — см. формулы в википедии.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.