@spido

Как написать условие где параметром является цвет?

Приветствую!
Ищу способ написать условие, где параметром является цвет в формате каком угодно, лиж бы работало.

Сейчас делаю так:
if ($page_back_color > '#f2f2f1') {
 голова
 } else {
  ноги
}


Как ни странно, в большинстве случаев это работает, но при некоторых цветах бывает неправильно сравнивает.
Нужен способ сравнивать цвета, какой темнее или светлее относительно другого цвета, например как в условии '#f2f2f1'.
Ваши идеи?

Заранее спасибо откликнувшимся!
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега PHP
♬♬
Цвет обычно характеризуется тремя параметрами. В зависимости от цветовой модели: RGB (красный, зелёный, синий); HSV (оттенок, насыщенность, яркость); Lab (яркость, красно-зеленая ось, сине-жёлтая ось) и др. Больше-меньше можно сравнить только по какой-то одной оси.

«темнее, чем #f2f2f1» – можно определять, переведя цвет из RGB в HSV или Lab (гуглите формулы) и сравнивая только компонент яркости.

Ну, или безобразно упростить до трёх сравнений: каждого из R, G, B компонентов: R < 0xF2 || B < 0xF2 || B < 0xF1 Здесь косяк в том, что один компонент (напр. R) чуть-меньше порога, и остальные много выше него – дадут цвет более светлый, а этот подход посчитает его темнее.

str_split('f1f2f3', 2) даст массив ['f1', 'f2', 'f3'].

intval('f1', 16) сделает из строки 'f1' число 241.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
23 апр. 2024, в 15:45
10000 руб./за проект
23 апр. 2024, в 15:42
5000 руб./за проект
23 апр. 2024, в 15:34
10000 руб./за проект