2 голоса
 
991 просмотр
5.11.2016 / 20:48  Naik

Как получить/посчитать такой цвет, чтоб он был читаем на заданном фоне

Есть картинка. Нужно нарисовать на ней ненавязчивый но хорошо читаемый текст (типа как Palette в Android). Вот достал такую инфу с помощью ImageMagic, но что с ней делать непонятно :gg:
Открыть спойлер

В Image statistic и Chromaticity вроде что-то полезное
Изм. Naik от 5.11.2016 / 20:51
Ответы
 
2 голоса
 
# 5.11.2016 / 21:17  aNNiMON
Бери среднее RGB, переводи в HSV, далее:

hue = (hue + 180) % 360
sat = 100 - sat
val = 100 - val

Если sat и val близки к 50, то ставь 0 или 100.
 
1 голос
 
# 6.11.2016 / 10:37  aNNiMON
Кстати, одно замечание. Статистику картинки нужно считать для того участка, на котором будет выводиться текст.

И, думаю, sat и val можно ещё считать по аналогии с оттенком:
sat = (sat + 50) % 100
val = (val + 50) % 100
Хотя это и не сильно контрастно будет, зато всегда равномерно.
Изм. aNNiMON от 6.11.2016 / 13:20
6.11.2016 / 18:34  Naik
Все работает, но сделал по-другому. Мне нужно для watermark, поэтому взял белую картинку и рисую с прозрачностью `1 - hsv['v']` Для ~95% изображений подходит. Еще ранее пробовал просто налаживать в режиме soft_light но на черном фоне было невидимо, да и watermark на разноцветном фоне получался разноцветный :gg:
6.11.2016 / 21:19  Naik
Такую штуку сделал :gg: https://gist.github.com/NaikSoftware/26ed7f95ef8ecd7b9f365195b903588e
Для работы нужен установленный ImageMagick
Всего: 2

Реклама

Мы в соцсетях

tw tg yt gt