Ahoj, zdravím u dalšího kola programátorské minisoutěže o placku a
nálepky. Dnešní téma bude ASCII art, přesněji převod obrázku na znaky.
Naprogramujte aplikaci, která si po spuštění řekne o obrázek a tento
obrázek převede na znaky. Výsledek zobrazí v prohlížeči jako HTML
stránku. Text můžete barvit, použít můžete libovolný programovací
jazyk.
Kdysi jsem něco takového dělal (teď jsem tím převedl toho ptáka co je
níže), můžete se inspirovat zde (umí to jen bmp soubory): http://www.itnetwork.cz/…zku-na-znaky
Výsledné programy vyzkoušíme na několik obrázků, autor nejlepšího
výsledku získává placku a nálepky Kdo má kterou placku si pamatujeme, brzy se budou zobrazovat v
profilech a přidají i nějaký skill
Hint: Používejte neproporcionální písmo, jaký znak použít (odstín)
zjistíte podle toho, kolik pixelů černé tento znak na pozadí zabírá.
Jaký by mělo smysl poskládat obrázek ze stejných znaků? Obarvení je samozřejmě jen pro
přidání na efektu, algoritmus pracuje s obrázkem jako by byl
černobílý.
Program by měl umět zvládnout obrázek libovolné velikosti, pouze se
zadá velikost ve znacích pro výstup. Otevřu tedy obrázek v 400*300, zadám
že chci velikost 40 znaků a vyleze mi 40*30 znaků.
Tak môj už zvláda všetko, čo potrebuje, len sa mi nechce tvoriť UI Inak bude vadiť ak sem dám
len PHP súbory a nedám to niekam online, niekedy to vie byť dosť náročné
hlavne s veľmi veľkými obrázkami tak nechcem riskovať problémy s mojim
hostingom ak by sa niekto nudil a skúšal tam obrovské obrázky
O to nejde, posledni dobou me prevlada lenost. Samotny konverter jsem mel
hotovy za 15 minut i se zadavanim pomeru pro zmenseni, ale zatim to vypisuje do
konzole a mne se zase nechce nic delat
Tak to sem už dám, aby som na to zajtra nezabudol https://dl.dropboxusercontent.com/…HP/ascii.zip Vie to
robiť s JPG, PNG a ako tak GIF (Obrázok prerobí, len farby nepozná iné ako
modré). Použil som tam Nette, pretože sa mi nechcelo robiť formulár na
nahratie obrázka ručne, samotná premena obrázka do ASCII ho nepotrebuje.
To je tým, ako si nastavíš to číslo pri uploade. Na malé obrázky je
lepšie malé, pretože ak má obrázok 52x64px a ty si nastavíš že 1 znak
zbere 10x10px tak ti vznikne niečo dosť divné, takto sdraco vypadá pri
nastavení na 1.
Aplikace se hodí na obrázky jako máte ty angry birds v avatarech. Fotka
nebude převedana úplně dokonale. Aplikace umožňuje nastavit velikost
výsledku. Aplikace je naprosto jednoduchá, avšak se říká že v
jednoduchosti je síla.
Vaše aplikace jsem nechal zpracovat ten samý obrázek a porovnal výsledky.
Díval jsem se i na zdrojový kód, ale ten máte všichni 3 perfektní.
Greenman (100 bodů)
Velmi pěkná realizace, u fontu bych jen vypnul antialiasing, aby byl
výsledek přesnější. Bylo by vhodné zahrnout poměr stran znaků ve fontu
do poměru stran výsledného obrázku, aby byl opticky stejný, jako
předloha.
Hartrik (100 bodů)
Zajímavý model dědičnosti, vypnul jsi antialising při tvorbě palety,
zaregistroval jsem i řešení průhledných pixelů, pěkný kód, poměr stran
řešíš snížením výšky řádku, lepší by bylo upravit aplikaci tak, aby
byla výška řádku standardní a tak výška obrázku o něco nižší. Placku
získáváš také, nedokáži hodnotit dobře napsanou aplikací v Javě a
dobře napsanou aplikací v PHP.
Misaz (85 bodů)
Velmi hezky napsaná aplikace, jsi mistr jazyků, už jsi tu programoval
snad úplně ve všem. Bohužel jsi úplně bojkotoval výběr znaků na
základě prostoru, který znak na pozadí zabírá. Vybíráš jen náhodně z
několika znaků, např. bílou ti to určí jako H. Znak H určitě zabírá
nějaký prostor, bude to tedy třeba 30% odstín, ne 0%.
Placky posíláme Hartrikovi a GreenManovi. Předpokládám, že
GreenMan chce slona, Hartrik chce jakou?
Pro srovnání dávám výstupy vašich programů a originál do přílohy
(originál, GreenMan, Hartrik, Misaz). Jako velmi zajímavé se zdá určení
barvy pozadí, u GreenMana vypadají ty hory dole velmi pěkně na černém
pozadí, obloha je pak hezčí zas u Hartrika. Mohlo by být zajímavé vymyslet
algoritmus, co by dopočítával barvu pozadí, aby výsledek vypadal co
nejlépe. Také mě napadá, že by se s takovou grafikou dala krásně udělat
nějaká textovka v konzoli
EDIT: Teď mi vlastně došlo, že GreenMan by měl mít tu paletu otočenou,
jelikož na černém pozadí by měly být světlé znaky větší a tmavé
menší. Možná bys to ještě mohl zkusit převrátit, jak by to vypadalo,
docela by mě to zajímalo.
Ďakujem za peknú súťaž a gratulujem ostatným, že zvládli svoj výtvor
dokončiť a ak sa im páči umiestnenie tak aj k tomu. Áno, samozrejme chcem
slona, už sa mi o ňom aj snívalo Skúsil som zmeniť to pozadie na biele, ale na tom čiernom to má
podľa mňa také svoje kúzlo a už to nie je tak pekné.
Rozhodol som sa urobiť si tohto Machra. Program pracuje taktiež s počtom
pixelov čiernej v znaku, s transparentnosťou atď. Vytváranie obrázka je
trochu pomalšie nakoľko si to zoraďuje znaky podľa počtu pix. čiernej pri
každom vygenerovaní obrázka.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.