# Как извлечь цветовую палитру из картинки с помощью ИИ: сервисы для дизайнеров и пиксель-арта

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-izvlech-tsvetovuyu-palitru-iz-kartinki-s-pomoschyu.html

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

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-izvlech-tsvetovuyu-palitru-iz-kartinki-s-pomoschyu-ru-1.jpg)

- Компьютер с актуальной версией Windows, macOS или Linux и правом записи в рабочую папку.
- Исходное изображение в PNG или JPG. Для пиксель-арта — только PNG: JPG «съедает» точные цвета и добавляет лишние оттенки.
- Браузер и интернет — для онлайн-сервисов извлечения палитры (работают без установки чего-либо).
- Python 3.10+ и пакеты `Pillow`, `scikit-learn` — для локального способа, когда нужно контролировать алгоритм.
- ImageMagick — консольная утилита для работы с изображениями; нужна, если хотите получить палитру одной командой.
- Графический редактор с импортом палитр (форматы `.gpl`, `.ase`, `.pal`).
- Понимание базовых форматов цвета: HEX — цвет в виде `#1E90FF`, RGB — три числа от 0 до 255, HSL — тон/насыщенность/яркость.

## Пошаговая инструкция
![Иллюстрация к разделу «Пошаговая инструкция»](https://ai-release.org/guides/img/kak-izvlech-tsvetovuyu-palitru-iz-kartinki-s-pomoschyu-ru-2.jpg)

1. Подготовьте исходник. Откройте картинку в редакторе и обрежьте всё лишнее: рамки, водяные знаки, фон другого цвета. Для пиксель-арта не масштабируйте изображение с интерполяцией — используйте режим «nearest neighbour» (ближайший сосед), иначе появятся промежуточные цвета, которых в оригинале не было.
**Пример:** сохраните результат как `palette_src.png` в папке `D:\work\palette`.
Ожидаемый результат: один чистый файл без лишних элементов.

2. Оцените, сколько уникальных цветов в картинке. Это подскажет, сколько цветов запрашивать у сервиса. Быстрая проверка одной командой ImageMagick:

```bash
magick palette_src.png -format %k info:
```

Число в выводе — количество уникальных цветов, например `2781`.
Почему это работает: утилита проходит по всем пикселям и считает уникальные значения цвета, не меняя файл.

3. Соберите палитру онлайн-сервисом — это вариант «без кода». Загрузите `palette_src.png` на сайт-экстрактор палитр, выберите количество цветов (обычно от 5 до 16) и нажмите кнопку извлечения. Сервис кластеризует похожие пиксели и выдаёт список HEX-кодов.
**Пример:** выбираете 8 цветов и получаете список вида `#0D1B2A`, `#1B263B`, `#415A77`, `#778DA9`…
Ожидаемый результат: готовая палитра на экране и кнопка «Export»/«Copy HEX».
Такие палитры удобно сразу переносить в презентации и макеты — приёмы оформления разобраны в гайде [«Как создавать презентации с помощью ИИ: лучшие сервисы и советы»](https://ai-release.org/guides/kak-sozdavat-prezentatsii-s-pomoschyu-ii-luchshie-servi.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

4. Соберите палитру локально скриптом — это вариант «под контролем». Сначала поставьте окружение и библиотеки:

```bash
python -m venv venv
venv\Scripts\activate
pip install pillow scikit-learn
```

На macOS/Linux вторая строка будет `source venv/bin/activate`.
Почему это работает: виртуальное окружение изолирует библиотеки, чтобы не ломать системный Python.

5. Запустите скрипт извлечения палитры. Создайте файл `extract_palette.py`:

```python
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) создаётся скриптом:

```python
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.
Ожидаемый результат: цвета появились в панели и применяются в один клик.

Чек-лист перед тем, как считать работу законченной:

- [ ] Исходник обрезан, фон и рамки убраны.
- [ ] Для пиксель-арта взят PNG без потерь и масштабирование nearest neighbour.
- [ ] Количество цветов выбрано осознанно (5–16, для пиксель-арта — 8/16/32).
- [ ] Явные дубли оттенков удалены.
- [ ] Палитра импортирована в редактор и проверена на реальном макете.
- [ ] Файл палитры сохранён рядом с проектом, а не в «Загрузках».

Форматы, в которые обычно сохраняют результат:

| Формат | Где используется | Пример содержимого |
|---|---|---|
| HEX-текст | веб, CSS, Figma | #415A77 |
| GPL | GIMP, Inkscape, Krita | текстовый список цветов |
| ASE | Photoshop, Illustrator | бинарная палитра |
| PNG-полоса | любой редактор | картинка с квадратами цвета |

## Возможные проблемы и решения
![Иллюстрация к разделу «Возможные проблемы и решения»](https://ai-release.org/guides/img/kak-izvlech-tsvetovuyu-palitru-iz-kartinki-s-pomoschyu-ru-3.jpg)

**Симптом:** сервис выдал «грязную» палитру — 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.

## FAQ

**Сколько цветов просить у сервиса?**
Для веб-интерфейса обычно хватает 5–8: это фон, текст, акцент и пара вспомогательных. Для пиксель-арта — 8, 16 или 32 цвета, это привычные ограничения ретро-палитр.

**Можно ли извлечь палитру из JPG или обязательно PNG?**
Можно, но JPG искажает цвета артефактами сжатия, и в палитру попадут лишние близкие оттенки. Если исходник только в JPG, сохраните его в PNG перед обработкой и уменьшите число кластеров.

**Чем онлайн-сервис отличается от локального скрипта?**
Сервис быстрее и не требует установки, но вы не управляете алгоритмом. Скрипт с k-means даёт контроль над числом цветов и позволяет сразу писать палитру в `.gpl`. Оба подхода дают один и тот же принцип кластеризации.

**Подходит ли ИИ-палитра для анимации и видео?**
Да, но цвета удобнее хранить единым файлом палитры, чтобы кадры не «плыли». Если делаете анимацию или ролик, посмотрите гайд [«Как создавать видео с помощью ИИ и Remotion: гайд по автоматизации»](https://ai-release.org/guides/kak-sozdavat-video-s-pomoschyu-ii-i-remotion-gayd-po-av.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide) — палитру там можно задать один раз и переиспользовать во всех сценах.
