Коли ти хочеш стилізувати сторінку під головне зображення — наприклад, обрати кольори для фону, кнопок або заголовків — зручно взяти палітру напряму з картинки. У попередній статті ми зробили це на чистому PHP. Сьогодні ж — розглянемо простіший і точніший спосіб: через бібліотеку ColorThief.
Що таке ColorThief?
Це PHP-порт популярної JavaScript-бібліотеки, яка дозволяє витягнути:
-
основний колір зображення;
-
палітру з кількох найчастіших кольорів.
І все це — буквально в кілька рядків.
Початковий код
Як і раніше, візьмемо невеличку папку з прикладами, просто щоб побачити, як палітри працюють з різними картинками. Але памʼятай: у реальному проєкті ти, швидше за все, оброблятимеш одне головне зображення.
Спершу встановимо бібліотеку ColorThief через Composer:
Далі підключимо бібліотеку потрібному місці:
Файли зображень підключаємо так само, як у попередній статті:
І так само проходимося по циклу із знайденими картинками:
Як це працює
Використання ColorThief зводиться до написання буквально кількох рядків — без зайвих складнощів.
Пояснення параметрів:
-
Шлях до зображення
-
Якість пошуку — чим менше число, тим точніше, але повільніше (я використовую
10
, і це, на мій погляд, дає цілком добрі результати). -
Ділянка для аналізу — оскільки аналізуємо все зображення, вказуємо
null
. -
Формат повернення — вказуємо
'hex'
, інакше повернеться масив RGB (або буде помилка).
Те саме стосується палітри:
Другий параметр тут — кількість кольорів, які потрібно витягнути. Я обрав 7 — цього достатньо для оформлення сторінки.
Виведення зображення
Для демонстрації зображення і ключового кольору використовуємо функцію:
Додатковий бонус
На цьому можна було б і зупинитись, але... 😉
Палітра, яку повертає ColorThief — це не варіації одного кольору, а різні кольори, які зустрічаються в зображенні. Причому вони не впорядковані за яскравістю: може бути темний, потім світлий, потім знову темний — не надто зручно, якщо ти плануєш використовувати палітру в стилях CSS.
Щоб зробити палітру придатною до автоматичного використання, виконаємо два кроки:
-
Відсортуємо кольори за яскравістю
-
Вирівняємо яскравість поступово — від темного до світлого
Сортування за яскравістю
Цей фрагмент ти вже бачив/ла вище:
Додаємо функцію getLuminance()
:
Більше нічого робити не потрібно, можемо вивести палітру і глянути, що там і як. Перейди ось сюди, до робочого прикладу, і подивись на результат – під картинками верхній набір кольорів – це ті знайдені і відсортовані кольори.
Коригування яскравості
А тепер найцікавіше – проганяємо всі кольори через окрему функцію (як же я без неї – кастомної функції 😂) і отримуємо повністю збалансований по яскравості набір (на сторінці із робочим прикладом це нижній набір кольорів):
Висновок
Працювати з бібліотекою ColorThief — приємно: вона точніша і стабільніша, ніж наш варіант на чистому PHP. Особливо приємно, що все зводиться до 2-3 рядків.
Але!
Якщо запустити обидва приклади одночасно — ти помітиш, що чистий PHP працює майже миттєво, а бібліотека — «подумає». І це при параметрі якості 10
. А якщо вказати 1
, скільки часу піде на 20 зображень? 😅
Тож маєш два інструменти: обирай той, який більше пасує до твого проєкту — легкість і швидкість або точність і стабільність.
Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.