Гайд решает одну конкретную задачу: превратить картинку — референс, скриншот, готовый спрайт или чужой арт — в аккуратную палитру с точными HEX-кодами, вместо того чтобы часами подбирать цвета пипеткой вручную. Подходит для дизайнеров интерфейсов, иллюстраторов и пиксель-арт художников, которые работают на Windows, macOS или Linux в любом редакторе с поддержкой палитр (GIMP, Krita, Photoshop, Aseprite).


1. Подготовьте исходник. Откройте картинку в редакторе и обрежьте всё лишнее: рамки, водяные знаки, фон другого цвета. Для пиксель-арта не масштабируйте изображение с интерполяцией — используйте режим «nearest neighbour» (ближайший сосед), иначе появятся промежуточные цвета, которых в оригинале не было.
Пример:сохраните результат как `palette_src.png` в папке `D:\work\palette`.
Ожидаемый результат: один чистый файл без лишних элементов.
2. Оцените, сколько уникальных цветов в картинке. Это подскажет, сколько цветов запрашивать у сервиса. Быстрая проверка одной командой ImageMagick:
magick palette_src.png -format %k info:
Число в выводе — количество уникальных цветов, например `2781`.
Почему это работает: утилита проходит по всем пикселям и считает уникальные значения цвета, не меняя файл.
3. Соберите палитру онлайн-сервисом — это вариант «без кода». Загрузите `palette_src.png` на сайт-экстрактор палитр, выберите количество цветов (обычно от 5 до 16) и нажмите кнопку извлечения. Сервис кластеризует похожие пиксели и выдаёт список HEX-кодов.
Пример:выбираете 8 цветов и получаете список вида `#0D1B2A`, `#1B263B`, `#415A77`, `#778DA9`…
Ожидаемый результат: готовая палитра на экране и кнопка «Export»/«Copy HEX».
Такие палитры удобно сразу переносить в презентации и макеты — приёмы оформления разобраны в гайде «Как создавать презентации с помощью ИИ: лучшие сервисы и советы».
4. Соберите палитру локально скриптом — это вариант «под контролем». Сначала поставьте окружение и библиотеки:
python -m venv venv
venv\Scripts\activate
pip install pillow scikit-learn
На macOS/Linux вторая строка будет `source venv/bin/activate`.
Почему это работает: виртуальное окружение изолирует библиотеки, чтобы не ломать системный Python.
5. Запустите скрипт извлечения палитры. Создайте файл `extract_palette.py`:
from PIL import Image
from sklearn.cluster import KMeans
img = Image.open("palette_src.png").convert("RGB")
img = img.resize((200, 200)) # ускоряем расчёт
pixels = list(img.getdata())
kmeans = KMeans(n_clusters=8, n_init=10, random_state=0).fit(pixels)
for color in kmeans.cluster_centers_:
r, g, b = [int(c) for c in color]
print(f"#{r:02X}{g:02X}{b:02X}")
Пример вывода:`#0D1B2A`, `#415A77`, `#E0E1DD` — восемь строк HEX.
Почему это работает: алгоритм k-means ищет 8 «центров» — самых характерных цветов, к которым ближе всего остальные пиксели. Это тот же принцип, что используют онлайн-экстракторы, только параметры задаёте вы.
6. Отфильтруйте получившиеся цвета. Если в списке несколько почти одинаковых оттенков, уменьшите `n_clusters` до 5–6 или вручную удалите дубли. Для пиксель-арта полезно ограничить палитру 8, 16 или 32 цветами — так спрайт выглядит цельно.
Ожидаемый результат: короткий список без «мусорных» близнецов.
7. Экспортируйте палитру в файл редактора. Формат GPL (текстовый список цветов для GIMP, Inkscape, Krita) создаётся скриптом:
colors = ["#0D1B2A", "#1B263B", "#415A77", "#778DA9"]
with open("my_palette.gpl", "w") as f:
f.write("GIMP Palette\nName: My Palette\n#\n")
for c in colors:
r, g, b = int(c[1:3], 16), int(c[3:5], 16), int(c[5:7], 16)
f.write(f"{r:3} {g:3} {b:3}\t{c}\n")
Ожидаемый результат: файл `my_palette.gpl`, который редактор видит в списке палитр.
8. Импортируйте палитру и проверьте её. В GIMP: «Окна → Панели → Палитры», затем «Импортировать палитру». В Krita: «Настройки → Управление ресурсами → Палитры». Для пиксель-арта импорт делается так же в Aseprite.
Ожидаемый результат: цвета появились в панели и применяются в один клик.
Чек-лист перед тем, как считать работу законченной:
Форматы, в которые обычно сохраняют результат:
| Формат | Где используется | Пример содержимого |
|---|---|---|
| HEX-текст | веб, CSS, Figma | #415A77 |
| GPL | GIMP, Inkscape, Krita | текстовый список цветов |
| ASE | Photoshop, Illustrator | бинарная палитра |
| PNG-полоса | любой редактор | картинка с квадратами цвета |

Симптом:сервис выдал «грязную» палитру — 16 цветов, из которых 5 почти одинаковые серые.
Решение: уменьшите число цветов до 6–8, предварительно обрежьте фон и градиенты. Затем пересчитайте палитру. Причина в том, что большое число кластеров дробит один плавный переход на несколько близких оттенков.
Симптом:команда `magick` не найдена — оболочка пишет «command not found» или «не является внутренней или внешней командой».
Решение: проверьте установку командой `magick -version`. Если вывод пустой, установите ImageMagick заново и при установке на Windows отметьте галочку «Add to PATH». После этого перезапустите терминал — PATH читается только при старте.
Симптом:импортированная палитра выглядит бледнее, чем исходная картинка.
Решение: проверьте цветовой профиль документа. Откройте файл как sRGB и уберите CMYK-профиль: конвертация CMYK→RGB сдвигает оттенки. Пересчитайте палитру из sRGB-версии файла.
Симптом:скрипт падает с ошибкой вида `ModuleNotFoundError: No module named 'sklearn'`.
Решение: активируйте виртуальное окружение (`venv\Scripts\activate`) и повторите `pip install pillow scikit-learn`. Если окружение не активировано, pip ставит пакеты в другой Python.
Сколько цветов просить у сервиса?
Для веб-интерфейса обычно хватает 5–8: это фон, текст, акцент и пара вспомогательных. Для пиксель-арта — 8, 16 или 32 цвета, это привычные ограничения ретро-палитр.
Можно ли извлечь палитру из JPG или обязательно PNG?
Можно, но JPG искажает цвета артефактами сжатия, и в палитру попадут лишние близкие оттенки. Если исходник только в JPG, сохраните его в PNG перед обработкой и уменьшите число кластеров.
Чем онлайн-сервис отличается от локального скрипта?
Сервис быстрее и не требует установки, но вы не управляете алгоритмом. Скрипт с k-means даёт контроль над числом цветов и позволяет сразу писать палитру в `.gpl`. Оба подхода дают один и тот же принцип кластеризации.
Подходит ли ИИ-палитра для анимации и видео?
Да, но цвета удобнее хранить единым файлом палитры, чтобы кадры не «плыли». Если делаете анимацию или ролик, посмотрите гайд «Как создавать видео с помощью ИИ и Remotion: гайд по автоматизации» — палитру там можно задать один раз и переиспользовать во всех сценах.