Извлечение палитры цветов
Загрузите изображение и извлеките цвета, которые его действительно определяют. Нажмите на любой образец, чтобы скопировать его hex-код.
Нажмите, чтобы выбрать изображение, или перетащите его сюда
Также работает вставка (Ctrl+V). Остаётся на вашем устройстве, ничего не загружается.
Как это работает
Цвета считываются напрямую с вашего изображения с помощью canvas API и группируются по схожести. Ничего не загружается, всё происходит в вашем браузере.
Как это работает
Ваше изображение отрисовывается на скрытом холсте после уменьшения до максимум 200 пикселей по длинной стороне, потому что уменьшенное изображение сохраняет почти такое же распределение цветов, как оригинал, и читается в тысячи раз быстрее. Из getImageData() извлекаются необработанные RGBA-данные, и любой пиксель с прозрачностью более 50% отбрасывается. Каждый оставшийся пиксель попадает в грубую сетку из 6 уровней на канал — всего 216 корзин, — и каждая корзина хранит сумму реальных значений. Корзины сортируются по количеству пикселей, побеждают верхние N, и каждый образец цвета — это среднее реальных пикселей в своей корзине, а не центр корзины, что не даёт результатам выглядеть искусственно «сглаженными».
Честное ограничение этого подхода: он измеряет площадь, а не важность. Портрет на фоне бежевой стены даст пять оттенков бежевого раньше, чем упомянет синюю куртку человека, просто потому что у стены больше пикселей. Если вам нужны акцентные цвета, а не доминирующие, увеличьте количество цветов и посмотрите ближе к концу списка, либо обрежьте изображение до нужной области перед загрузкой.
Само изображение никогда не покидает ваше устройство: оно загружается через локальный object URL, отрисовывается на холсте в памяти и считывается как байты — всё это в JavaScript этой страницы. Здесь вообще нет шага загрузки, который можно было бы перехватить, и вкладка «Сеть» остаётся пустой, пока вы извлекаете цвета.
Частые вопросы
Загружается ли моё изображение куда-либо?
Нет. Каждый пиксель считывается локально с помощью canvas API. Ничего не отправляется на сервер.
Как выбираются цвета?
Пиксели группируются по схожести, и самые многочисленные группы становятся вашей палитрой — каждый цвет вычисляется как среднее значение реальных пикселей, попавших в эту группу.
Почему цвета не совпадают точно с ожидаемыми?
Очень маленькие или тонкие детали могут раствориться в среднем значении, если они не занимают достаточную часть изображения. Попробуйте увеличить количество цветов, чтобы уловить больше деталей.