Уявімо ситуацію: ми додаємо зображення до матеріалу на сайті й хочемо, щоб дизайн сторінки підлаштувався під його настрій. Наприклад, фон або акцентні кольори — щоб усе виглядало гармонійно. Для цього можна витягти основний колір із зображення і створити на його основі палітру — світліші й темніші відтінки.
У цій статті покажу, як це зробити на чистому PHP, без жодних зовнішніх бібліотек. Просто — і працює практично всюди.
Початковий код
Щоб краще побачити результат, візьмемо папку з кількома зображеннями і пройдемося по ній циклом. Для кожного зображення отримаємо ключовий колір і згенеруємо палітру кольорів. Це — лише для демонстрації.
У реальному сценарії, наприклад у шаблоні статті чи галереї, зазвичай обробляється лише одне головне зображення. Але для тесту — більше, щоб оцінити, як працює алгоритм на різних картинках.
Як визначити "ключовий" колір?
Ключовим ми називаємо приблизно середній колір зображення. Не найпоширеніший (це складніше), а саме усереднений. Ідея проста:
-
зменшуємо зображення до мініатюри (щоб обробка була швидкою);
-
проходимо по кожному пікселю і обчислюємо середнє значення для R, G і B;
-
результат — колір у форматі HEX (
#rrggbb
), який візуально відповідає "настрою" картинки.
Створюємо палітру: темніші і світліші варіанти
Маючи ключовий колір, ми хочемо створити палітру з кількох відтінків: і світліших, і темніших. Для цього:
-
Перетворюємо HEX у HSL (відтінок, насиченість, яскравість).
-
Трохи змінюємо яскравість (lightness), зберігаючи відтінок і насиченість.
-
Повертаємо результат у формат HEX.
Виводимо результат красиво
Щоб краще оцінити палітру, обгорнемо зображення у блок з фоном відповідного кольору. Для візуальної естетики додамо маску:
Підсумок
-
Ми навчилися отримувати ключовий колір із будь-якого зображення на PHP, без сторонніх залежностей. Це забезпечує просто блискавичну швидкість отримання ключового кольору і палітри для нього.
-
Усереднений колір достатньо добре передає загальний настрій картинки.
-
Побудова палітри на основі HSL дозволяє зберегти відтінок, змінюючи лише світлість — що дає приємні варіанти для дизайну.
Можеш використовувати це для створення динамічних тем, адаптивних заголовків, фонових блоків або просто щоб зробити сторінку більш живою.
Результат виконання коду (і швидкість його роботи) можна подивитися на оцій сторінці – приклад.
Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.