Přehled

Jako semestrální projekt do kurzu programování v C++ na vysoké škole jsem vytvořil konzolovou aplikaci, která převádí obrázky na ASCII art. Cílem bylo prohloubit znalosti programování v C++, včetně práce se soubory, zpracování obrázků, dědičnosti tříd, polymorfismu a tvorby konzolového rozhraní.
Aplikace načte vstupní obrázky, zpracuje je tak, aby mapovala jas pixelů na odpovídající ASCII znaky, a výsledný ASCII art zobrazí v konzoli nebo uloží do textového souboru. Součástí je kompletní konzolové uživatelské rozhraní s možností výběru obrázků, použití filtrů a přehrávání slideshow.

Technické detaily
Aplikace je napsána v C++. NCurses vytváří konzolové rozhraní, zatímco LibPNG a LibJpeg načítají obrazové soubory. Samostatné třídy obsluhují načítání obrázků, filtry a prvky rozhraní.
Zpracování obrazu jsem implementoval ručně. Musel jsem pochopit formáty BMP, PNG a JPEG, abych správně detekoval typ souboru. Poté se obrazová data přečtou a převedou na stupně šedi. Jas každého pixelu se nakonec namapuje na konkrétní ASCII znak podle předdefinované sady znaků, kterou může uživatel změnit v konfiguračním souboru.
Použité technologie
- C++
- NCurses (konzolové rozhraní)
- LibPNG (práce s PNG obrázky)
- LibJpeg (práce s JPEG obrázky)
- Make (automatizace buildu)