Утилита для генерации ASCII-надписей и картинок
| tui | ||
| .gitignore | ||
| ARCHITECTURE.md | ||
| go.mod | ||
| go.sum | ||
| image.go | ||
| LICENSE | ||
| options.go | ||
| README.md | ||
| text.go | ||
| variant.go | ||
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.go→render()реализован полностью: ресайз, яркость (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"