piart

au: vitas (šnek) matfyz (tečka) cz

Příkad: Eva a Mája

Download

usage: piart
        [-l img-list(=list)]
        [-d indir(=png24x18)]
        [-i inpng(=in.png)]
        [-o output w/o ext (=out)]
        [-b big-dir(=png640x480)]
        [-x N(=4)] [-y N(=3)]
        [-u] unique (try not repeat)
        [-p] do one big png
	[-B N] border size (=1)
	[-m img] result must have this img (=none)

Vstupni obrazky jsou v adreari png24x18 (-d), jejich seznam je v souboru list (-l), velke ekvilenty jsou v adresari png640x480 (-b) (vubec se nepouzivaji, jen je na ne odkazovano v .html). Nazev vystupu je out (-o), pro konkretni soubory je pripojena prislusna pripona (out.png popr. out.html).

Misto html se spoustou obrazku se muze vygenerovat jeden .png s jednim .html ktery zajistuje klikabilnost (-p).

Cerna mrizka se da potlacit nastavenim okraje na 0 (-b).

Je mozne vynutit, aby vysledek obsahoval nejaky konkretni maly obrazek, typicky ten obrazek, ktery zrovna mozaikujeme (-m).

Algoritmus

Maly obrazek se deli na 4x3 podobrazky (-x, -y). Tyto podobrazky se pak odpovidaji jednomu pixelu vstupniho obrazku (-i). Deleni musi byt delitelem velikosti maleho obrazku. Velikost vysledneho obrazku tedy zavisi na velikosti vstupniho obrazku a na deleni malych obrazku.

Algoritmus vybira fotku s nejmensi chybou, pricemz chyba je suma ctvercu rozdilu prumernych barvev v podobrazku od ciloveho pixelu.

Trosku horsi (a dele se pocita), ale o to je zajimavejsi vysledek: kdyz se zakaze opakovani obrazku (-u). V kazdem kole se od tech nejlepsich obrazku vybere jejich nejlepsi pozice. V dalsich kolech uz se tyto nezucastnuji (ani obrazky ani pozice). To ma tu nevyhodu, ze nakonec tam nejake duplikaty precijen zustanou a ty co zustanou jsou ty horsi varianty. To jeste trosku propracuji. Mozna.

Priprava

Fotku pozadovanych rozmeru ziskame z originalu (prepokladame ze fotka je jiz 3:4.

$ convert --geometry 256x256 orig.jpg in.png

Jine velikosti malych obrazku:

$ mkdir png32x24
$ TO=32x24;for i in png640x480/*.png ; do ii=png$TO/${i#png640x480/}; echo $i; echo convert -geometry $TO $i $ii; done

Vsechny fotky z pikomatu jsou prevedeny na 640x480 timto zpusobem: (nejprve se zmensi (pri zachovani pomeru) tak, aby se jim dal jen tesne vepsat 640x480 a ten se pak vyrizne z prostredka). Tim se zamozrejme zmrsi fotky typu portrait. Ale coz.

$ ./do-sq.sh 

(v souboru SEZNAM=seznam-fotek.txt jsou cesty k fotkam)