Утилита для генерации ASCII-надписей и картинок
Find a file
2026-08-26 11:56:56 +03:00
tui V 1.0.0 2026-08-26 11:56:56 +03:00
.gitignore V 1.0.0 2026-08-26 11:56:56 +03:00
ARCHITECTURE.md V 1.0.0 2026-08-26 11:56:56 +03:00
go.mod V 1.0.0 2026-08-26 11:56:56 +03:00
go.sum V 1.0.0 2026-08-26 11:56:56 +03:00
image.go V 1.0.0 2026-08-26 11:56:56 +03:00
LICENSE Initial commit 2026-08-26 08:54:53 +00:00
options.go V 1.0.0 2026-08-26 11:56:56 +03:00
README.md V 1.0.0 2026-08-26 11:56:56 +03:00
text.go V 1.0.0 2026-08-26 11:56:56 +03:00
variant.go V 1.0.0 2026-08-26 11:56:56 +03:00

asciigen — скелет проекта

Структура

asciigen/
├── go.mod
├── variant.go        # тип Variant + интерфейс Renderer
├── options.go        # ImageOptions/TextOptions, палитры, пресеты
├── image.go           # ImageRenderer — картинка -> ASCII
├── text.go            # TextRenderer — текст -> FIGlet-баннер
├── tui/
│   └── model.go       # bubbletea-модель: список превью + выбор
└── cmd/asciigen/
    └── main.go        # CLI: `asciigen img file.png` / `asciigen text "Hello"`

Ядро (asciigen.Renderer) не знает о TUI и не знает о CLI — можно подключить как библиотеку в другой Go-проект (auspex, rimefrost и т.д.) и обвязать своим интерфейсом, ничего не переписывая внутри пакета.

Подробный разбор потока данных и почему всё разложено именно так — см. ARCHITECTURE.md.

Что уже готово

  • Интерфейс Renderer с двумя реализациями (ImageRenderer, TextRenderer)
  • Пресеты вариантов (палитры для картинок, шрифты для текста)
  • TUI на bubbletea: навигация стрелками, превью справа, Enter — полный рендер
  • CLI-обвязка с двумя подкомандами
  • image.gorender() реализован полностью: ресайз, яркость (luma), гамма-коррекция, инверсия, маппинг на палитру, опциональный ANSI-цвет

Что нужно доделать

  • go.sum — появится сам после go mod tidy (нужен доступ к proxy.golang.org, которого нет в этой песочнице, так что тут не собирал и не компилировал)
  • Реальный запуск и визуальная проверка на конкретных картинках — стоит подобрать Gamma под глаз, цифры в пресетах сейчас ориентировочные
  • См. "Известные ограничения" в ARCHITECTURE.md — сознательно не решённые мелочи (авто-определение ширины терминала, оптимизация ANSI-вывода)

Запуск (после go mod tidy у себя)

go run ./cmd/asciigen img photo.png
go run ./cmd/asciigen text "HELLO"