Учитывая цвет фона, как получить основной цвет, который делает его читаемым на том цвете фона?

Учитывая цвет фона, как получить основной цвет, который делает его читаемым на том цвете фона?

Я означаю вычислять тот основной цвет автоматически в программе.

Или упростите проблему, если основной цвет выбран из белого/черного, как сделать выбор в программе?

24
задан Peter O. 15 August 2017 в 13:40
поделиться

3 ответа

Самым безопасным вариантом является соблюдение Руководства по доступности веб-контента 2.0 Консорциума Всемирной паутины (W3C), которое определяет коэффициент яркости контрастности 4,5:1 для обычного текста (12 pt или меньше) и 3,0:1 для крупного текста. Коэффициент контрастности определяется как:

[Y(b) + 0,05] / [Y(d) + 0,05]

Где Y(b) - яркость (светимость) более яркого цвета, а Y(d) - яркость более темного цвета.

Яркость Y вычисляется путем преобразования каждого из значений RGB цвета в значения rgb с поправкой на гамму:

  • r = (R/255)^2.2
  • b = (B/255)^2.2
  • g = (G/255)^2. 2

Затем объедините их, используя константы sRGB (округленные до 4-х мест):

Y = 0.2126*r + 0.7151*g + 0.0721*b

Это дает белому цвету Y равный 1, а черному - Y равный 0, поэтому максимально возможный контраст равен (1.05/ 0.05) = 21 (в пределах ошибки округления).

Или позвольте JuicyStudio сделать расчеты за вас.

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

18
ответ дан 28 November 2019 в 23:59
поделиться
  • Вычислите светлоту (см. HSL)
  • Если светлота меньше 50%, используйте белый цвет. В противном случае используйте черный.

Использование цветов в качестве цвета переднего плана затруднено, поскольку необходимо учитывать контрастность и цветовую слепоту.

5
ответ дан 28 November 2019 в 23:59
поделиться

Вы можете вычислить инверсный цвет, но вы рискуете ослабить контраст «посередине» цветового пространства.

0
ответ дан 28 November 2019 в 23:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: