IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Diskuze: Machr na algoritmy - Převod obrázku na znaky

Aktivity
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:19.5.2013 16:35

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á.

Soutěž končí také neděli 26.5. v 15:00.

Editováno 22.5.2013 9:12
Odpovědět
19.5.2013 16:35
New kid back on the block with a R.I.P
Avatar
Michal Žůrek - misaz:19.5.2013 19:27

Když to udělám skusím udělat v javě, můžu mít placku pro javu?

 
Nahoru Odpovědět
19.5.2013 19:27
Avatar
David Hartinger
Vlastník
Avatar
Nahoru Odpovědět
19.5.2013 20:39
New kid back on the block with a R.I.P
Avatar
Hartrik
Tvůrce
Avatar
Odpovídá na David Hartinger
Hartrik:19.5.2013 21:32

Můžeme používat libovolnou znakovou sadu, nebo pouze ASCII?

Editováno 19.5.2013 21:32
 
Nahoru Odpovědět
19.5.2013 21:32
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Hartrik
David Hartinger:20.5.2013 9:36

Měly by to být klasické ASCII znaky, nemusí to být na 100% ASCII sada, ale měla by se tam vyskytovat písmena, čísla a další známé znaky.

Nahoru Odpovědět
20.5.2013 9:36
New kid back on the block with a R.I.P
Avatar
Michal Maršálek:20.5.2013 10:48

Pokud se může obarvovat, tak proč používat různé znaky? Použití různých znaků jako různých odstínů bych chápal, kdyby to mělo být černobílé.

 
Nahoru Odpovědět
20.5.2013 10:48
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Michal Maršálek
David Hartinger:20.5.2013 10:51

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ý.

Nahoru Odpovědět
20.5.2013 10:51
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Michal Maršálek:20.5.2013 11:11

Chápu, že by to nemělo smysl, ale nebylo mi jasné proč to teda tak je.

 
Nahoru Odpovědět
20.5.2013 11:11
Avatar
Hartrik
Tvůrce
Avatar
Odpovídá na David Hartinger
Hartrik:20.5.2013 18:43

Na jak velkých obrázcích se bude testovat?
v poměru 1 pixel == 1 znak?

 
Nahoru Odpovědět
20.5.2013 18:43
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Hartrik
David Hartinger:20.5.2013 18:53

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ů.

Editováno 20.5.2013 20:33
Nahoru Odpovědět
20.5.2013 18:53
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Michael Olšavský:20.5.2013 19:12

? Jak se to počítá? Nechtěl jsi napsat 10 znaků? Nebo jsem asi uplně mimo :D

 
Nahoru Odpovědět
20.5.2013 19:12
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Michael Olšavský
David Hartinger:20.5.2013 20:34

Chtěl jsem napsat 40, už jsem to opravil :) Jde o nejdelší hranu. Nebo si nech zadat výšku a šířku, je to jedno.

Editováno 20.5.2013 20:34
Nahoru Odpovědět
20.5.2013 20:34
New kid back on the block with a R.I.P
Avatar
Hartrik
Tvůrce
Avatar
Hartrik:21.5.2013 20:58

Předpokládám že soutěž končí také v neděli 26.5. v 15:00.
Jinak už to mám hotové ;)

 
Nahoru Odpovědět
21.5.2013 20:58
Avatar
Зайчик
Člen
Avatar
Odpovídá na Hartrik
Зайчик:21.5.2013 21:22

šikovnej :)

Nahoru Odpovědět
21.5.2013 21:22
Коммунизм для нашего будущего!
Avatar
GreenMan
Tvůrce
Avatar
GreenMan:21.5.2013 23:29

Tak môj už zvláda všetko, čo potrebuje, len sa mi nechce tvoriť UI :D 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 :D

Nahoru Odpovědět
21.5.2013 23:29
Zelená zostane zelenou, aj keď na ňu vyleješ modrú. - Satik64
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Hartrik
David Hartinger:22.5.2013 9:12

Vidíš, nenapsal jsem to tam, díky :)

Nahoru Odpovědět
22.5.2013 9:12
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na GreenMan
David Hartinger:22.5.2013 9:16

Vypadá to dobře, link mi můžeš poslat do PM, aby ti to ostatní nezasekli :P

Nahoru Odpovědět
22.5.2013 9:16
New kid back on the block with a R.I.P
Avatar
Homo
Člen
Avatar
Odpovídá na David Hartinger
Homo:22.5.2013 18:18

Generovani HTML je podminkou, nebo staci kdyz se to bude moct ulozit jako obrazek?

Nahoru Odpovědět
22.5.2013 18:18
1010011 1000101 1011000
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Homo
Kit:22.5.2013 18:24

U tebe bych nečekal, že bys měl problémy s generováním HTML. Vždyť v Javě se generuje skoro samo.

Nahoru Odpovědět
22.5.2013 18:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Homo
Michal Žůrek - misaz:22.5.2013 18:25

to html je asi aby to mohlo být i barevné, protože jinak bys to mohl dát do txt.

 
Nahoru Odpovědět
22.5.2013 18:25
Avatar
Hartrik
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Hartrik:22.5.2013 18:34

A když to bude tisknout do obrázku tak to snad bude černobílé?

 
Nahoru Odpovědět
22.5.2013 18:34
Avatar
Homo
Člen
Avatar
Odpovídá na Kit
Homo:22.5.2013 18:49

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 :-D

Nahoru Odpovědět
22.5.2013 18:49
1010011 1000101 1011000
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Homo
David Hartinger:23.5.2013 9:01

Generování HTML je podmínkou, máš to to samé jako výpis do konzole, jen znaky obalíš spanem s barvou.

Nahoru Odpovědět
23.5.2013 9:01
New kid back on the block with a R.I.P
Avatar
Homo
Člen
Avatar
Odpovídá na David Hartinger
Homo:23.5.2013 10:20

Jasny :-) nakonec jsem zjistil ze je to jednodusi nez ukladani do obrazku kde musim resit jak velikost pisma tak i velikost obrazku.

Nahoru Odpovědět
23.5.2013 10:20
1010011 1000101 1011000
Avatar
GreenMan
Tvůrce
Avatar
GreenMan:25.5.2013 20:48

Tak to sem už dám, aby som na to zajtra nezabudol :D 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.

Nahoru Odpovědět
25.5.2013 20:48
Zelená zostane zelenou, aj keď na ňu vyleješ modrú. - Satik64
Avatar
Odpovídá na GreenMan
Michael Olšavský:25.5.2013 21:06

Nechceš to dát na hosting? Nedávno jsem si odinstaloval Apache. Nějak mi blbnul a od té doby jsem ho nepotřeboval.

 
Nahoru Odpovědět
25.5.2013 21:06
Avatar
Odpovídá na GreenMan
Michal Žůrek - misaz:25.5.2013 21:13

Pošli nějaký sample obrázek na kterém jsi to testoval.

 
Nahoru Odpovědět
25.5.2013 21:13
Avatar
Michal Žůrek - misaz:25.5.2013 21:14

Ono totiž sracovo logo vypadá asi nějak takto:

 
Nahoru Odpovědět
25.5.2013 21:14
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Honza Bittner:25.5.2013 21:14

Stáhni si UwAmp (http://www.uwamp.com/)
funguje to bez instalace a je to podle mě super ! :)

(http://prntscr.com/16mrm1)

Nahoru Odpovědět
25.5.2013 21:14
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
GreenMan
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
GreenMan:25.5.2013 21:30

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.

Nahoru Odpovědět
25.5.2013 21:30
Zelená zostane zelenou, aj keď na ňu vyleješ modrú. - Satik64
Avatar
Michal Žůrek - misaz:26.5.2013 11:58

I zde přidávám svůj výtvor.

http://uloz.to/…my-misaz-zip

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.

 
Nahoru Odpovědět
26.5.2013 11:58
Avatar
Hartrik
Tvůrce
Avatar
Hartrik:26.5.2013 14:49

Moje aplikace:
http://db.tt/iPQWSdNa

Přibaleno několik ukázek.
U barevných obrázků se snažte, aby se na šířku vešel do okna prohlížeče.

 
Nahoru Odpovědět
26.5.2013 14:49
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:26.5.2013 15:22

Hned jdu na hodnocení, jen trochu rozmrznu :)

Nahoru Odpovědět
26.5.2013 15:22
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:26.5.2013 16:47

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í.

  1. 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.
  2. 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.
  3. 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. :)

Editováno 26.5.2013 16:51
Nahoru Odpovědět
26.5.2013 16:47
New kid back on the block with a R.I.P
Avatar
Hartrik
Tvůrce
Avatar
Odpovídá na David Hartinger
Hartrik:26.5.2013 17:00

Díky za hodnocení :) a gratuluji GreenManovi

Vzal bych si Java placku ;)

 
Nahoru Odpovědět
26.5.2013 17:00
Avatar
GreenMan
Tvůrce
Avatar
Odpovídá na David Hartinger
GreenMan:26.5.2013 17:02

Ď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 :D 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é.

Nahoru Odpovědět
26.5.2013 17:02
Zelená zostane zelenou, aj keď na ňu vyleješ modrú. - Satik64
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na GreenMan
David Hartinger:26.5.2013 17:05

Nene, já myslel nechat černé pozadí, ale reverznout to pole s paletou znaků :P

Nahoru Odpovědět
26.5.2013 17:05
New kid back on the block with a R.I.P
Avatar
GreenMan
Tvůrce
Avatar
Odpovídá na David Hartinger
GreenMan:26.5.2013 17:28

Ahá, no ja som bol vždy pomalší v chápaní :D

Nahoru Odpovědět
26.5.2013 17:28
Zelená zostane zelenou, aj keď na ňu vyleješ modrú. - Satik64
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na GreenMan
David Hartinger:26.5.2013 17:29

Jo, tohle je lepší, dole tmavé, nahoře světlé, díky :)

Nahoru Odpovědět
26.5.2013 17:29
New kid back on the block with a R.I.P
Avatar
Hartrik
Tvůrce
Avatar
Odpovídá na David Hartinger
Hartrik:26.5.2013 17:33

Ty řádky jsem snížil, protože mi mezery mezi nimi připadaly moc velké.

 
Nahoru Odpovědět
26.5.2013 17:33
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Hartrik
David Hartinger:26.5.2013 17:34

Možná něco mezi :D

Nahoru Odpovědět
26.5.2013 17:34
New kid back on the block with a R.I.P
Avatar
Hartrik
Tvůrce
Avatar
Hartrik:26.5.2013 17:38

Asi jo...

  • 70%
 
Nahoru Odpovědět
26.5.2013 17:38
Avatar
Michal Žůrek - misaz:27.5.2013 14:48

To moje funguje tak že se zaokrouhlené barvě přiřadí znak a ten se za ní vždy dosadí.

To nejsou nádně vybraná písmena, to jsou znaky, které mají stejnou šířku jako výšku.

 
Nahoru Odpovědět
27.5.2013 14:48
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Michal Žůrek - misaz
David Hartinger:27.5.2013 14:52

Já vím, jak to funguje, ale barva se přiřazuje náhodně.

Nahoru Odpovědět
27.5.2013 14:52
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Michal Žůrek - misaz:27.5.2013 14:54

myslíš znak :)

Ano přiřazuje se náhodně.

 
Nahoru Odpovědět
27.5.2013 14:54
Avatar
Štefan Pružinský:19.3.2015 16:42

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.

Zdrojáky: https://www.dropbox.com/…xrwS2ysz5i5a?dl=0
.exe: https://www.dropbox.com/…eToASCII.exe?dl=0

Editováno 19.3.2015 16:43
Nahoru Odpovědět
19.3.2015 16:42
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Štefan Pružinský:19.3.2015 19:05

Ocenil by som krátke zhodnotenie...

Nahoru Odpovědět
19.3.2015 19:05
Najefektívnejším spôsobom debuggingu je modlitba. :)
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.

Zobrazeno 47 zpráv z 47.