Как по цвету фона в RGB определить светлый он или тёмный? Есть цвет фона - он может быть любым, даже #791 И есть заранее известные и определённые светлые и тёмные цвета текста. Например, светлые - #fff, #ff0, #0f0 Тёмные - #800, #000 Очевидно, что на светлом фоне не будет виден светлый текст, и на тёмном - тёмный. Как определить, светлый фон или тёмный (true/false), чтобы подобрать соответствующий цвет текста?
Для определения, является ли фон светлым или тёмным, можно воспользоваться формулой для определения контраста между двумя цветами.
Для RGB значения цветов представляются в виде трёх чисел от 0 до 255: одно для красного (R), одно для зелёного (G) и одно для синего (B).
Для определения контраста между цветом фона и цветом текста можно использовать следующее уравнение:
L = (0.2126 R) + (0.7152 G) + (0.0722 * B)
Это уравнение учитывает восприятие цвета человеческим глазом и оценивает яркость цвета на основе его RGB значения.
Если значение L больше 128 (половина от 255), то фон считается светлым. Если значение L меньше или равно 128, фон считается тёмным.
Пример:
Для цвета фона #791: R=119, G=153, B=145
L = (0.2126 119) + (0.7152 153) + (0.0722 * 145) ≈ 139.63
Таким образом, цвет фона #791 можно считать светлым.