V následujících dnech mám v plánu dělat parsování souboru .tsk.
Myšlenka je navržena zde (čtěte poslední sekci dole):
http://texture-edit.blogspot.cz/2015/02/zamysleni-procedura-exclude.html
Soubor task má sloužit jako definice oblasti, kterou chcete stahovat (oblastí, které chcete stahovat nebo upravovat), včetně oblastí, které z toho chcete vynechat.
pondělí 30. března 2015
sobota 7. března 2015
ramdisk
Na této stránce jsem našel seznam 12ti programů, které toto umí:
12 benchmarked programs for RAMdisk
Nyní teda hledám vhodný program.
SoftPerfect Ramdisk
Tenhle program se mi líbí. Stačí tři kliknutí a disk o velikosti až 4GB je vytvořen. Já si vytvořil na zkoušku disk o velikosti 1024 GB. Ovládání je lehké a vzhled jednoduchý.
Stáhnout ho můžete zde: SoftPerfect Ramdisk (pozor, ta stránka je záludná, je třeba kliknout na tlačítko, které je úplně dole ať nestáhnete nežádoucí program). Pokud chcete kliknout přímo na instalačku: ramdisk_setup.exe
Rychlost je velice slibná:
poznámka z praxe:
Při práci s tímto Ramdiskem jsem rozbaloval archiv zip cca 11MB 4.862 souborů a 1524 složek a když jsem to dělal v rámci jednoho RAMdisku tak se objevila neskutečně dlouhá doba na rozbalení asi hodina a dvacet minut. Proto jsem vytvořil ještě jeden RAMdisk do kterého jsem dal ten soubor na rozbalení a pak jsem to rozbaloval do toho většího RAMdisku. Trvalo to jen 15 minut, ale bylo to tou metodou že to tak dlouho trvalo. Pak překopírování na disk bylo otázkou mžiku. To jen tak abyste věděli že někdy může být lépe vytvořit zvlášť zdrojový a zvlášť cílový RAMdisk. Jo a lidi, nikdy nepoužívejte na takové věci zip, protože ve Winraru jsem to měl zabalené asi za 3 sekundy (rozbalené taksamo), rychlá komprese a přitom archiv zabírá o několik kB méně než zip.
Další Ramdisky
S programy níže jsem už nebyl tak spokojen
Hned z prvního obrázku vídíte jak pomalý je zápis na pevný disk (a čtení z něj) a z dalších obrázků vidíte jak rychlé to je pokud to provádíme jen v rámci paměti.
Zaujal mě tento program jakožto nejrychlejší Ramdisk (freeware): Bond Disc
ale jeho limit je max. 640MB prostoru ramdisku (což není zrovna moc ideální by bylo min. 1GB-2GB).
Lepším programem se zdá být DataRam ramdisk, ten nabízí 4GB v rámci freeware licence, i když nedosahuje tak velké rychlosti jako předchozí program. Tento se mi ale bohužel nepovedlo nainstalovat na Windows XP x86 (ale píšou tam že je třeba x86 nebo x86 a min. Windows server 2003).
Poznámka:
Aktuálně pracuji na zkušebním programu, který načítá hlavičku souboru bgl a zjistil jsem že tam je údaj o kompresi. Není tedy pravda, že metoda komprese je neznámá. Je však otázka jestli najdu způsob jak soubor dekomprimovat. Možná nenajdu, avšak ramdisk se bude každopádně hodit. Můžete si plugin Save images nastavit přímo tak aby vám ukládal obrázky přímo na ten disk, čímž se urychlí celá operace. Zápis na disk totiž bývá pomalejší než čtení z disku, jak můžete vidět na obrázku níže:
čím méně MB/s tím pomalejší ...
Definice zdroje s -r regex
Ve výpočetní technice se často používají regulární výrazy abyste mohli pomocí jednoho textového řetězce vyjádřit proměnný tvar řetězce, se kterým hledáte. O tom jsem už psal v souvislosti s pluginem Save images. V mém programu bude existovat možnost jak jednoduše specifikovat soubory, které chcete použít pro provedení příkazu. Argument se označuje jako -r a můžete to číst jako regex (z anglického regular expression). slovo regex zde označuje syntaxy.
Syntaxe použití:
program.exe -r regex
-r {x:..}_{y:...}_extension
-r {...}_{...}_extension
-r _{x:..}_{y:...}_extension
-r _{x:..}_{y:...}_extension
Místo tří teček si doplníte buď číslo nebo číselný rozsah. Místo extension si doplníte koncovku souboru nebo regulární výraz pro koncovku. Písmena x: a y: označují kterou osu v mřížce označuje číslo v souboru.
-r _{...}_{...}_ se překládá jako -r _{y:..}_{x:...}_
Pokud neuvedete písmeno x,y tak je výraz vyhodnocen tak, že na místě první závorky se očekává y.
Příklady použití:
-r 15_{0-2}_{3-4}*.jpg
Program bude hledat předponu 15_ a za ním číselný rozsah označující osu y. Za tímto číslem je uvedeno podtržítko a za ním číslo x. Za ním může následovat jakýkoliv textový řetězec končící koncovkou .jpg
Tečka na konci znamená že program bude hledat tečku v názvu souboru.
Obdoba příkazu nahoře:
-r 15_{y:0-2}_{x:3-4}*.jpg
Oba regulární výrazy mají vyhledat tyto soubory:
15_0_3.jpg
15_0_4.jpg
15_1_3.jpg
15_1_4.jpg
15_2_3.jpg
15_2_4.jpg
V průzkumníku Windows si můžete tyto soubory najít a uspořádat přesně tak jak to vidíte v mém výpisu. Toto je výhoda pojmenování souboru ve stylu y,x místo x,y protože v opačném případě nebudou soubory jasně uspořádány podle osy y.
Další příklady:
-r 15_{y:-2}_{x:-4}*.jpg
-r 15_{y:-2}_{-4}*.jpg
Zde jsem napsal pouze jedno číslo, avšak pozor! Nejedná se o číslo záporné. Pomlčka zde znamená, že číslo nalevo uvnitř závorky chybí! Tzn. není zadán dolní limit a proto tento výraz bude hledat tyto soubory:
15_0_0.jpg
15_0_1.jpg
15_0_2.jpg
15_0_3.jpg
15_0_4.jpg
15_1_0.jpg
15_1_1.jpg
15_1_2.jpg
15_1_3.jpg
15_1_4.jpg
15_2_0.jpg
15_2_1.jpg
15_2_2.jpg
15_2_3.jpg
15_2_4.jpg
Příklady s nevýhodným uspořádáním souborů:
-r 15_{x:2-}_{y:2-}*.jpg
Tento výraz hledá soubor začínající na 15_ a pokračující číslem vyšším než 2 na osex umístěné jako uprostřední číslo souboru a poslední číslo je y větší než dva.
-r 15_{x:2000-}_{-}*.jpg
Tento výraz hledá soubory začínající na číslo 15_ a pokračující od čísla 2000 výše pro osu x. Osa y může být jakékoliv číslo a pak následuje koncovka souboru.
Využití v praxi
V praxi se tento regulární výraz bude hodit například na vytvoření jednoho obrazu pomocí příkladu -join z menších obrazů, které zapadají do mřížky. Stejně tak by mělo být možno rozdělit soubor na více obrázků tímto způsobem. Vhodné pro nacvičování základních operací programu. Vyšší formou na rozsáhlejší operace bude příkaz -task, který se nebude omezovat pouze na dva číselné rozsahy.
Syntaxe použití:
program.exe -r regex
-r {x:..}_{y:...}_extension
-r {...}_{...}_extension
-r _{x:..}_{y:...}_extension
-r _{x:..}_{y:...}_extension
Místo tří teček si doplníte buď číslo nebo číselný rozsah. Místo extension si doplníte koncovku souboru nebo regulární výraz pro koncovku. Písmena x: a y: označují kterou osu v mřížce označuje číslo v souboru.
-r _{...}_{...}_ se překládá jako -r _{y:..}_{x:...}_
Pokud neuvedete písmeno x,y tak je výraz vyhodnocen tak, že na místě první závorky se očekává y.
Příklady použití:
-r 15_{0-2}_{3-4}*.jpg
Program bude hledat předponu 15_ a za ním číselný rozsah označující osu y. Za tímto číslem je uvedeno podtržítko a za ním číslo x. Za ním může následovat jakýkoliv textový řetězec končící koncovkou .jpg
Tečka na konci znamená že program bude hledat tečku v názvu souboru.
Obdoba příkazu nahoře:
-r 15_{y:0-2}_{x:3-4}*.jpg
Oba regulární výrazy mají vyhledat tyto soubory:
15_0_3.jpg
15_0_4.jpg
15_1_3.jpg
15_1_4.jpg
15_2_3.jpg
15_2_4.jpg
V průzkumníku Windows si můžete tyto soubory najít a uspořádat přesně tak jak to vidíte v mém výpisu. Toto je výhoda pojmenování souboru ve stylu y,x místo x,y protože v opačném případě nebudou soubory jasně uspořádány podle osy y.
Další příklady:
-r 15_{y:-2}_{x:-4}*.jpg
-r 15_{y:-2}_{-4}*.jpg
Zde jsem napsal pouze jedno číslo, avšak pozor! Nejedná se o číslo záporné. Pomlčka zde znamená, že číslo nalevo uvnitř závorky chybí! Tzn. není zadán dolní limit a proto tento výraz bude hledat tyto soubory:
15_0_0.jpg
15_0_1.jpg
15_0_2.jpg
15_0_3.jpg
15_0_4.jpg
15_1_0.jpg
15_1_1.jpg
15_1_2.jpg
15_1_3.jpg
15_1_4.jpg
15_2_0.jpg
15_2_1.jpg
15_2_2.jpg
15_2_3.jpg
15_2_4.jpg
Příklady s nevýhodným uspořádáním souborů:
-r 15_{x:2-}_{y:2-}*.jpg
Tento výraz hledá soubor začínající na 15_ a pokračující číslem vyšším než 2 na osex umístěné jako uprostřední číslo souboru a poslední číslo je y větší než dva.
-r 15_{x:2000-}_{-}*.jpg
Tento výraz hledá soubory začínající na číslo 15_ a pokračující od čísla 2000 výše pro osu x. Osa y může být jakékoliv číslo a pak následuje koncovka souboru.
Využití v praxi
V praxi se tento regulární výraz bude hodit například na vytvoření jednoho obrazu pomocí příkladu -join z menších obrazů, které zapadají do mřížky. Stejně tak by mělo být možno rozdělit soubor na více obrázků tímto způsobem. Vhodné pro nacvičování základních operací programu. Vyšší formou na rozsáhlejší operace bude příkaz -task, který se nebude omezovat pouze na dva číselné rozsahy.
neděle 1. března 2015
Práce s vrstvama a maskama
Na rozdíl od Photoshopu, když budete pracovat s vrstvama budete psát příkazy přímo do txt souboru a nebude ani moc záležet na pořadí vrstev. Photoshop funguje tak, že když nad jednu vrstvu umístíte jinou vrstvu a dáte ji nějaký blending efekt (například color) a pak do této vrstvy kreslíte, tak se barvy promítají do spodní vrstvy. Můj program ale nebude pracovat pomocí oken, takže si potřebujete uvědomit jak takové kreslení probíhá nebo jak se to dá realizovat z pohledu programátorského .
Když ve Photoshopu založíte novou vrstvu je to jako byste měli neprůsvitný raster (obraz), který zcela překrývá spodní vrstvu (obraz) ale k této vrstvě ve skutečnosti existuje nějaká maska, kterou nemůžete vidět. Co je to maska už asi víte: je to černobílý obraz. Když založíte novou vrstvu tak maska je černá a to znamená, že nic není ve vrstvě a v masce nakresleného. Když začnete kreslit do nové vrstvy, tak se současně provádí kreslení i do masky. Když uděláte první ťuknutí štětcem, nakreslíte kolečko. Toto kolečko má například hnědou barvu a nakreslí se do vrstvy. Tu vidíte. Ale do masky se nakreslí bílé kolečko. Tak program ví, že jste nakreslili nějaký tvar do obrazu. To co je černé je průsvitné a proto se vám to jeví jakoby kolem kolečka nic nebylo a proto vidíte to co je pod vrstvou.
To co se ve Photoshopu jeví jako pouhé klepnutí štětcem do nové vrstvy, se v mém programu musí udělat složitěji. Připomínám ale, že můj program není na kreslení pomocí nástrojů, ale spíše pro práci s již existujícími fotografiemi, texturami či mapkami. Takže pokud máte fotku na kterém jsou bílé objekty (čtverce, kolečka, atp.) a chcete vytvořit masku, tedy aby zbytek fotky byl průhledný. Musíte nejdříve vybrat barvy. První předpoklad je že takových fotek máte více a že všechny tvary na všech fotkách mají bílou barvu v určitém rozsahu. Musíte tedy nejdříve v nějakém programu, např. ve Photoshopu zjistit jaký barvový rozsah tento objekt či tvar obsahuje. Poté co si zapíšete minimální a maximální hodnoty pro HSV (kanály H,S,V), tyto hodnoty napíšete do txt souboru s barvama do kterého se můj program podívá.
Pak potřebujete vytvořit masky pro každou fotografii. Spustíte program s danými argumenty. Mezi argumenty bude i název toho souboru s barvama. Jakmile program najde soubor, načte vaše definice barev a podle valších argumentů vytvoří masku nebo více masek k danému souboru (ke všem souborům).
Masky se vytváří tak, že program prochází celý obraz a zjišťuje který pixel odpovídá požadavkům na vaše barvy a pak vytváří nový obraz, tj. černobílou masku. Měly by existovat dva typy mask. Jednobitová a osmibitová.
Osmibitová maska (BW 8)
To je obyčejná maska, kde jeden byte může obsahovat 256 hodnot od 0 až po 255, a tudíž kromě černé a bílé může obsahovat i přechody mezi barvama. Technicky vzato program s takovou maskou bude pracovat pomaleji než s jednobitovou maskou. Masku je nejlépe uložit do formátu PNG.
Jednobitová maska (BW 1)
Jednobitová maska obsahuje pouze černou a bílou, jsou to dvě hodnoty. Do jednoho bytu se vleze 128 pixelů. Z toho vyplývá, že obraz masky může být 128x menší než u 8-bit masky. Z programátorského hlediska se s 1-bitovýma maskama pracuje těžko, ale výsledek by měl být velmi rychlý přístup (hlavně pro čtení) k masce. Zpracovávání obrazů které obsahují 1-bitové masky by pak probíhalo mnohonásobně rychleji než u 8-bitových masek (v nejlepším případě 128x rychleji). Jednoduše proto, že při porovnávání mezi maskou a fotografií se čte z masky po 128 pixelech, ne po jednom pixelu. Čím více černé v masce je, tím rychleji porovnávání probíhá. Protože v případě černé masky se neprovádí žádné změny do cílové fotografie, pak je i zpracování úkolu mnohem rychlejší.
Jakmile jsou masky vytvořeny, můžete vytvořit nový příkaz a soubor pro práci s vrstvami, kde si nadefinujete co dělat, jaká maska náleží které vrstvě. Pak spustíte příkaz, který bude obsahovat definici zdrojů a masek. To celé se pak provede a měly byste dostat podobný efekt jako ve Photoshopu.
Samozřejmě to celé zabere spoustu času, včetně pochopení jak program funguje, takže se nevyplatí dělat to kvůli 10 ti fotografiím. Ale kvůli 10.000 ba 100.000 fotografiím se to už vyplatí.
Když ve Photoshopu založíte novou vrstvu je to jako byste měli neprůsvitný raster (obraz), který zcela překrývá spodní vrstvu (obraz) ale k této vrstvě ve skutečnosti existuje nějaká maska, kterou nemůžete vidět. Co je to maska už asi víte: je to černobílý obraz. Když založíte novou vrstvu tak maska je černá a to znamená, že nic není ve vrstvě a v masce nakresleného. Když začnete kreslit do nové vrstvy, tak se současně provádí kreslení i do masky. Když uděláte první ťuknutí štětcem, nakreslíte kolečko. Toto kolečko má například hnědou barvu a nakreslí se do vrstvy. Tu vidíte. Ale do masky se nakreslí bílé kolečko. Tak program ví, že jste nakreslili nějaký tvar do obrazu. To co je černé je průsvitné a proto se vám to jeví jakoby kolem kolečka nic nebylo a proto vidíte to co je pod vrstvou.
To co se ve Photoshopu jeví jako pouhé klepnutí štětcem do nové vrstvy, se v mém programu musí udělat složitěji. Připomínám ale, že můj program není na kreslení pomocí nástrojů, ale spíše pro práci s již existujícími fotografiemi, texturami či mapkami. Takže pokud máte fotku na kterém jsou bílé objekty (čtverce, kolečka, atp.) a chcete vytvořit masku, tedy aby zbytek fotky byl průhledný. Musíte nejdříve vybrat barvy. První předpoklad je že takových fotek máte více a že všechny tvary na všech fotkách mají bílou barvu v určitém rozsahu. Musíte tedy nejdříve v nějakém programu, např. ve Photoshopu zjistit jaký barvový rozsah tento objekt či tvar obsahuje. Poté co si zapíšete minimální a maximální hodnoty pro HSV (kanály H,S,V), tyto hodnoty napíšete do txt souboru s barvama do kterého se můj program podívá.
Pak potřebujete vytvořit masky pro každou fotografii. Spustíte program s danými argumenty. Mezi argumenty bude i název toho souboru s barvama. Jakmile program najde soubor, načte vaše definice barev a podle valších argumentů vytvoří masku nebo více masek k danému souboru (ke všem souborům).
Masky se vytváří tak, že program prochází celý obraz a zjišťuje který pixel odpovídá požadavkům na vaše barvy a pak vytváří nový obraz, tj. černobílou masku. Měly by existovat dva typy mask. Jednobitová a osmibitová.
Osmibitová maska (BW 8)
To je obyčejná maska, kde jeden byte může obsahovat 256 hodnot od 0 až po 255, a tudíž kromě černé a bílé může obsahovat i přechody mezi barvama. Technicky vzato program s takovou maskou bude pracovat pomaleji než s jednobitovou maskou. Masku je nejlépe uložit do formátu PNG.
Jednobitová maska (BW 1)
Jednobitová maska obsahuje pouze černou a bílou, jsou to dvě hodnoty. Do jednoho bytu se vleze 128 pixelů. Z toho vyplývá, že obraz masky může být 128x menší než u 8-bit masky. Z programátorského hlediska se s 1-bitovýma maskama pracuje těžko, ale výsledek by měl být velmi rychlý přístup (hlavně pro čtení) k masce. Zpracovávání obrazů které obsahují 1-bitové masky by pak probíhalo mnohonásobně rychleji než u 8-bitových masek (v nejlepším případě 128x rychleji). Jednoduše proto, že při porovnávání mezi maskou a fotografií se čte z masky po 128 pixelech, ne po jednom pixelu. Čím více černé v masce je, tím rychleji porovnávání probíhá. Protože v případě černé masky se neprovádí žádné změny do cílové fotografie, pak je i zpracování úkolu mnohem rychlejší.
Jakmile jsou masky vytvořeny, můžete vytvořit nový příkaz a soubor pro práci s vrstvami, kde si nadefinujete co dělat, jaká maska náleží které vrstvě. Pak spustíte příkaz, který bude obsahovat definici zdrojů a masek. To celé se pak provede a měly byste dostat podobný efekt jako ve Photoshopu.
Samozřejmě to celé zabere spoustu času, včetně pochopení jak program funguje, takže se nevyplatí dělat to kvůli 10 ti fotografiím. Ale kvůli 10.000 ba 100.000 fotografiím se to už vyplatí.
Přihlásit se k odběru:
Komentáře (Atom)


