{/ Эта страница автоматически передается из навыков SKILL.md с помощью сайта/scripts/generate-skill-docs.py. Редактируйте исходный SKILL.md, а не эту страницу. /}
Пиксель Арт
Пиксель-арт с палитрами эпох (NES, Game Boy, PICO-8).
Метаданные навыки
| Источник | Встроенный (установлен по умолчанию) |
| Путь | навыки/творчество/пиксель-арт |
| Версия | 2.0.0 |
| Автор | додо-рич |
| Лицензия | Массачусетский технологический институт |
| Платформы | Linux, MacOS, Windows |
| Теги | креатив, пиксель-арт, аркада, snes, nes, gameboy, ретро, изображение, видео |
Справочник: полный SKILL.mdℹ️ Info
Ниже приведено полное определение навыков, которые Hermes загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навыки активны.
Пиксель-арт
ℹ️ Info
Ниже приведено полное определение навыков, которые Hermes загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навыки активны.
Преобразуйте любое изображение в ретро-пиксель-арт, а затем, при желании, анимируйте его в короткие MP4 или GIF с эффектами, соответствующими эпохе (дождь, светлячки, снег, искры).
С этим навыком по именися два скрипта:
scripts/pixel_art.py— фото → PNG пиксель-арта (дизеринг Флойда-Стейнберга)scripts/pixel_art_video.py— PNG пиксель-арта → анимированный MP4 (+ опционально GIF)
Каждый из них можно импортировать или запустить напрямую. Пресеты привязываются к аппаратным палитрам, когда нужны цвета, соответствующие эпохе (NES, Game Boy, PICO-8 и т.д.), или сохраняют адаптивную N-цветную квантизацию для стиля аркад/SNES.
Когда использовать
- Пользователь хочет получить ретро-пиксель-арт из исходного изображения
- Пользователь просит стилизацию под NES/Game Boy/PICO-8/C64/аркаду/SNES
- Пользователь хочет короткую зацикленную анимацию (сцена дождя, ночное небо, снег и т.д.)
- Плакаты, обложки альбомов, посты в соцсетях, спрайты, персонажи, аватары
Рабочий процесс
Перед генерацией подтвердите стиль пользователем. Разные пресеты дают очень разные результаты, а перегенерация затратна.
Шаг 1 — Предложите стиль
Вызовите clarify с 4 репрезентативными пресетами. Выберите набор на основе того, что запросил пользователь — не вываливайте все 14.
Меню по умолчанию, когда намерение пользователя неясно:
clarify(
question="Какой стиль пиксель-арта вы хотите?",
choices=[
"arcade — смелый, коренастый стиль аркадных автоматов 80-х (16 цветов, 8px)",
"nes — аппаратная палитра Nintendo 8-bit (54 цвета, 8px)",
"gameboy — 4-оттеночный зеленый Game Boy DMG",
"snes — более чистый 16-битный вид (32 цвета, 4px)",
],
)
Когда пользователь уже назвал эпоху (например, «arkada 80-х», «Gameboy»), пропустите clarify и воспользуйтесь соответствующим пресетом напрямую.
Шаг 2 — Предложите анимацию (опционально)
Если пользователь запросил видео/GIF или вывод может ограничить движение, спросите, что произойдет:
clarify(
question="Хотите анимировать? Выберите сцену или пропустите.",
choices=[
"night — звезды + светлячки + листья",
"urban — дождь + пульсация неона",
"snow — падающие снежинки",
"skip — только изображение",
],
)
НЕ вызывайте «уточнить» более двух раз подряд. Один раз для стиля, один раз для сцен, если есть анимация. Если пользователь указал конкретный стиль и опасается в своем сообщении, пропустите clarify полностью.
Шаг 3 — Генерация
Сначала запустите pixel_art(); Если была запрошена анимация, передайте результат в pixel_art_video().
Каталог пресетов
| Пресет | Эпоха | Палитра | Блок | Лучше всего для |
|---|---|---|---|---|
аркада |
Аркады 80-х | адаптивная 16 | 8 пикселей | Смелые постеры, героический арт |
снес |
16-битный | адаптивная 32 | 4 пикселя | Персонажи, созданные сцены |
нес |
8-битный | РЭШ (54) | 8 пикселей | Настоящий вид РЭШ |
геймбой |
Портативный DMG | 4 развитие зеленого | 8 пикселей | Монохромный Game Boy |
gameboy_pocket |
Карманный портативный компьютер | 4 прийти к серому | 8 пикселей | Монохромный GB Pocket |
пико8 |
ПИКО-8 | 16 фиксированных | 6 пикселей | Вид фэнтези-консоли |
c64 |
Коммодор 64 | 16 фиксированных | 8 пикселей | 8-битный домашний компьютер |
яблоко2 |
Apple II высокого разрешения | 6 фиксированных | 10 пикселей | Экстремальное ретро, 6 цветов |
телетекст |
Телетекст Би-би-си | 8 чистых | 10 пикселей | Коренастые основные цвета |
mspaint |
Windows MS Paint | 24 фиксированных | 8 пикселей | Ностальгический рабочий стол |
mono_green |
ЭЛТ фосфор | 2 зеленых | 6 пикселей | Эстетика терминала/CRT |
моно_янтарь |
ЭЛТ янтарный | 2 янтаря | 6 пикселей | Вид Янтарного монитора |
неон |
Кибербанк | 10 неоновых | 6 пикселей | Vaporwave/кибер |
пастель |
Мягкая пастель | 10 пастельных | 6 пикселей | Каваи / нежный |
Именованные палитры находятся в scripts/palettes.py (см. references/palettes.md для полного списка — всего 28 именованных палитр). Любой пресет можно переопределить:
pixel_art("in.png", "out.png", preset="snes", palette="PICO_8", block=6)
Каталог сцен (для видео)
| Сцена | Эффекты |
|---|---|
ночь |
Мерцающие звезды + светлячки + дрейфующие листья |
сумерки |
Светлячки + искры |
таверна |
Пылинки + теплые искры |
внутренний |
Пылинки |
городской |
Дождь + пульсация неона |
природа |
Листья + светлячки |
магия |
Искры + светлячки |
шторм |
Дождь + молния |
под водой |
Пузырьки + световые искры |
огонь |
Угольки + искры |
снег |
Снежинки + искры |
пустыня |
Мерцание жара + пыль |
Шаблоны вызова
Питон (импорт)
import sys
sys.path.insert(0, "/home/teknium/.hermes/skills/creative/pixel-art/scripts")
from pixel_art import pixel_art
from pixel_art_video import pixel_art_video
# 1. Преобразование в пиксель-арт
pixel_art("/path/to/photo.jpg", "/tmp/pixel.png", preset="nes")
# 2. Анимация (опционально)
pixel_art_video(
"/tmp/pixel.png",
"/tmp/pixel.mp4",
scene="night",
duration=6,
fps=15,
seed=42,
export_gif=True,
)
интерфейс командной строки
cd /home/teknium/.hermes/skills/creative/pixel-art/scripts
python pixel_art.py in.jpg out.png --preset gameboy
python pixel_art.py in.jpg out.png --preset snes --palette PICO_8 --block 6
python pixel_art_video.py out.png out.mp4 --scene night --duration 6 --gif
Обоснование конвейера
Преобразование в пиксели:
1. Усиление контраста/цвета/резкости (сильнее для маленьких палитр)
2. Постеризация для упрощения тональных областей перед квантизацией
3. Уменьшение масштаба на block с Image.NEAREST (жесткие пиксели, без интерполяции)
4. Квантизация с дизерингом Флойды-Стейнберга — либо по адаптивной N-цветной палитре, либо по наименованной аппаратной палитре.
5. Увеличение обратно с Image.NEAREST
Квантизация ПОСЛЕ основного масштаба гарантирует, что дизеринг выровнен по конечной сетке пикселей. Квантизация до этого пошла бы на диффузию ошибок на детали, которые исчезли.
Наложение видео:
- Копирует базовый кадр для каждого тика (статический фон)
- Накладывает безсостоятельные покадровые отрисовки частиц (одна функция на эффекте)
- Кодирует через ffmpeg libx264 -pix_fmt yuv420p -crf 18
- Опциональный GIF через palettegen + paletteuse
Зависимости
- Питон 3.9+
- Подушка (
pip install Pillow) - ffmpeg в PATH (требуется только для видео — этот пакет устанавливает Hermes)
Ловушки
- Ключи палитры более тонкие к регистру («NES», «PICO_8», «GAMEBOY_ORIGINAL»).
- Очень маленькие источники (<100px в перерывах) ломаются под блоками 8-10px. Увеличьте источник, если он крошечный.
- Дробные
блокиилипалитрынарушают квантизацию — держат их числа целыми числами. - Количество анимации настроения для холстов ~640x480. На очень больших изображениях может появиться второй проход с другим семенем для плотности.
mono_green/mono_amberкак источник установкиcolor=0.0(обесцвечивание). Если вы переопределите и сохраните хром, 2-цветная палитра может дать полосы на гладких участках.- Цикл
уточнить: вызывайте его не более двух раз за ход (стиль, затем сцена). Не засыпайте пользователя другими выборами.
Проверка
- PNG создан по пути вывода
- Четкие квадратные блоки измерения при стандартном блоке пресета
- Количество цветов соответствует заданному (проверьте на глаз или выполните
Image.open(p).getcolors()) - Видео является действительным MP4 (
ffprobeможет его открыть) с ненулевым размером.
Атрибуция
Именованные аппаратные палитры и процедурные циклы анимации в pixel_art_video.py портированы из pixel-art-studio (MIT). См. ATTRIBUTION.md в этом каталоге навыков для подробностей.