ImageMagick je obrázkový kouzelník pro dávkové zpracování 
ve Windows a dalších programovacích jazycích (úvod)

Ačkoliv ve Windows je dávkový režim považován za počítačový středověk, dají se v něm kupodivu připravovat zajímavé aplikace. Myslím. že důvodem zatracení dávkového režimu ve Windows je jeho skrytí před běžnými uživateli a neohrabaný způsob ovládání včetně na první pohled nesrozumitelného jazyka, který opravdu vypadá odpudivě, a navíc mnoho věcí nedokáže vůbec.
Kdysi jsem s dávkovým režimem pracoval a snad ho i ovládal, tak se snažím si pomalu vybavit, jak se to vůbec dělalo.
Teď se pokouším vytvořit nějaký přístupný prostředek pod Windows, který by právě kvůli ImageMagicku zpřístupnil ovládání dávkového režimu a nevyžadoval žádné znalosti, spíše používal "napodobování" připravených postupů a změnu parametrů či celých dávkových programů, tzv. skriptů.
ImageMagick je primárně určen pro dávkové zpracování v systémech Unix a Linux. Většinu skriptů lze z těchto systémů převést do Windows, ale bohužel všechny ne, protože dávkový režim Windows pokulhává za vlastnostmi Linuxu a Unixu.
Pokud byste chtěli používat dávkové příkazy Linuxu ve Windows, můžete si stáhnout (zdarma) a nainstalovat program CygWin.exe, který dokonale simuluje ve Windows dávkový režim Linuxu. Pro jednodušší skripty to není nutné, ale většina složitějších ukázek ImageMagicku je na Internetu k dispozici právě pro Linux.

Dále následuje několik ukázek, které jsou připraveny v dávkovém režimu Windows a vytvářejí pomocí ImageMagick obrázky s dekorativním písmem. Vedle obrázků jsou odpovídající příkazy dávkového režimu Windows. Všechny příkazy jsou jednořádkové - pouze kvůli přehlednému zobrazení jsou vypsány na více řádcích. Řádky začínající dvěma dvojtečkami :: jsou komentáře a na příkazový řádek se nezapisují.
Uvedené příkazy lze libovolně modifikovat, např. měnit barvy, písmo a jeho velikost - a to bez znalosti syntaxe dávkových příkazů.
Pro použití těchto příkazů si musíte stáhnout a nainstalovat (zdarma) některou z verzí ImageMagick pro Windows a dále si vyhledat na Internetu a nainstalovat (zdarma) TrueType font Candice nebo vyměnit v příkazech font Candice např. za Arial nebo Arial-Black.

Uživatelé našeho programu Filatelop 7 od verze 01/2012 nemusí stahovat ani instalovat vůbec nic, kromě fontu Candice, který přidáme v téměř kompletní češtině až do únorové verze 2012. Navíc s programem dostanete i Cygwin.exe, dále jednoduchý převodník dávkových souborů Linux do Windows, provádění matematických výpočtů v dávkovém režimu a další. Program Filatelop 7 používá některé dávkové příkazy ImageMagick pro Windows, proto vše máte okamžitě k dispozici i k externímu použití mimo Filatelop 7.

Jaké je praktické použití následujících příkladů?

Pokud nahradíte standardní bleděmodré pozadí libovolnou fotografií nebo obrázkem, můžete zobrazený text umístit kamkoliv na zadanou fotografii či obrázek.
Jednoduše stačí upravit parametry - a výsledek je hotov! Žádný složitý grafický editor, pojíždění a klikání myší, hledání odpovídajících příkazů a nastavení v rozsáhlých a nesrozumitelných rozbalovacích menu...

Příklad č.

Výsledný obrázek

Dávkový příkaz pro cmd.exe

1.

:: Černé písmo
convert.exe -background lightblue -font Candice -fill black -pointsize 72 label:"Vivien" viviencernytext.png
2. :: Červené písmo
convert.exe -background lightblue -font Candice -fill red -pointsize 72 label:"Vivien" vivienredtext.png 
3. :: Červené písmo se žlutým obtažením tlošťky 2 pix
convert -background lightblue -fill Red -stroke yellow -strokewidth 2 -font Candice -pointsize 72 label:"Vivien" 18vivienredyellowtext.png
4. :: Průhledné písmo s tmavomodrým obtažením tloušťky 3
convert -background lightblue -fill None -stroke Navy -strokewidth 3 -font  Candice -pointsize 72  label:"Vivien" vivienstrokenavytext.png
5. :: Vícebarevné písmo s gradientem černá-červená s obtažením tloušťky 1
convert -size 205x81 xc:lightblue -font Candice -pointsize 72 -tile gradient:black-red -stroke Navy -strokewidth 1 -annotate +0+70 "Vivien"  viviengradienttext.png
6. :: Žluté písmo s červeným obtažením tloušťky 1 vepsané do zmenšené fotografie s maximální šířkou 205 bodů
convert vivienorig.png -font "Candice" -resize 205 -fill yellow -strokewidth 1 -stroke red -gravity south -pointsize 22 -draw "text 0,6 'Vivien Oplatková'" vivienfototext.png
7. :: Žluté písmo s červeným obtažením tloušťky 1 vepsané do zmenšené průhledné viněty na bleděmodrém pozadí s maximální šířkou 205 bodů
convert vivien.png -BackGround LightBlue -flatten -font "Candice" -resize 205 -fill Yellow -strokewidth 1 -stroke Red -gravity South -pointsize 22 -draw "text 0,6 'Vivien Oplatková'" vivienoplatkova.png
     
:: Trio-on-cube; Naši malí na 3D kostce
:: Použity 3 čtvercové obrázky 512x512
set bk=skyblue
convert -virtual-pixel transparent ^
( vivien-q.png -matte ^
+distort Affine "0,512 0,0 0,0 -870,-500 512,512 870,-500" ) ^
( beda-q.png -matte ^
+distort Affine "512,0 0,0 0,0 -870,-500 512,512 0,1000" ) ^
( miki-q.png -matte ^
+distort Affine " 0,0 0,0 0,512 0,1000 512,0 870,-500" ) ^
-background %bk% -layers merge +repage ^
-bordercolor %bk% -border 50x20 bix.png
convert -resize 300x400 bix.png trio-on-cube.png
::Zkopirování Logo Imagemagick do pravého dolního rohu obrázku
composite -gravity southeast logott.png trio-on-cube.png bix.png
convert bix.png trio-on-cube-logo.png


Pro úspěšné provedení výše uvedených příkazů si musíte nejprve stáhnout  některou z verzí ImageMagick pro Windows.
Pro počáteční experimentování určitě stačí nejméně náročná statická verze ImageMagick-6.7.5-1-Q8-windows-static.exe, která je bezvadně funkční i ve Windows 7 64bit.

Pokud chcete dostat při experimentování stejné obrázky, stáhněte si do libovolného adresáře  font Candice např. z této adresy (pouze se znaky anglické abecedy a několika českými znaky). Soubor CANDY.TTF je komprimován v souboru ZIP. Zobrazte si obsah tohoto souboru a potom dvojklikem ukázku písma v souboru CANDY.TTF. V zobrazeném okně se ukáží dostupné znaky v české verzi Windows a v horní části okna můžete font přímo nainstalovat do Windows. Později ho můžete kdykoliv smazat v Ovládácí panely - Písma. Font Candy obsahuje i několik znaků české abecedy, takže se text "Vivien Oplatková" zobrazí určitě správně.
Poznámka: S naším programem Filatelop 7 dodáváme dekorativní font Candice s kompletní sadou českých znaků, které jsme do fontu přidali.

JAK ZAČÍT

Jestliže jste ještě nikdy nepracovali s příkazovými řádky interpretu příkazů (Shell) ve Windows, pak si přečtěte následující text, jinak se tím nemusíte vůbec zatěžovat. Interpret příkazů ve Windows se jmenuje cmd.exe. Spustíte ho tak, že po stisku tlačítka Start napíšete cmd a stisknete Enter. Ihned se zobrazí nevzhledné černé okno interpretu příkazů.  Zpočátku není jasné, o co jde, ale máte před sebou velice výkonný nástroj pro přístup k jádru operačního systému. 

Poznámka: Upozorňuji na to, že sám nejsem zkušeným či dlouholetým uživatelem ImageMagicku. Postupně se teprve s tímto systémem seznamuji. Proto berte tento text jako soupis vlastních poznatků z práce s ImageMagickem. Většina popisů na Internetu je v angličtině a pro Linux. Popisy jsou většinou od zkušených uživatelů, kteří mají hluboké znalosti a nezabývají se vysvětlováním triviálních postupů, jejichž znalost považují za samozřejmou.

Interpret příkazů cmd.exe pracuje buď v interaktivním režimu, tj. tak, že přímo zadáváte příkazy z klávesnice, nebo v dávkovém režimu, kdy spouštíte posloupnost předem připravených příkazů tzv dávky v souborech s koncovkou .bat (ze slova batch= dávka).

Dále uvedu jen několik příkazů zadávaných přímo z klávesnice, které nám dovolí  spustit výše uvedený Příklad č. 1, takže dostanete identický obrázek. Všechny uvedené příkazy se dají zapsat do dávky a spouštět opakovaně.

Předpokládejme, že máte nainstalovaný grafický systém ImageMagick a font Candice.

Abychom si nevytvořili na disku změť pokusných souborů, nejprve bude vhodné vytvořit si adresář pro vlastní experimentování s ImageMagickem. Dejme tomu, že máme disk D  a na něm si vytvoříme adresář IM, ve kterém budeme experimentovat. Rozdíl mezi malými a velkými písmeny se v příkazech vždy ignoruje, můžete psát libovolně velkými nebo malými písmeny.

V cmd.exe zadejte postupně následující příkazy (text v hranatých závorkách ignorujte, je to jenom vysvětlení funkce příkazu. Interpret vždy zobrazuje aktuálně nastavený adresář a blikající kurzor informuje o čekání na zadání příkazu z klávesnice (tzv. prompt). Pro vytvoření  adresáře IM na disku D zadejte:

D:                [přejde na disk D]
MD IM           [= Make Directory - vytvoří adresář D:\IM ]
CD IM           [=Change Directory - změní aktuální adresář na  IM na disku D]
DIR              [vypíše obsah nastaveného adresáře D:\IM, který je samozřejmě po vytvoření prázdný - tento příkaz]
                  [nebylo třeba zadávat, ale ubezpečili jsme se o tom, že vše proběhlo v pořádku]

Nyní jsme v našem nově vytvořeném adresáři a interpret o tom informuje výpisem tzv. výzvy prompt:
D:\IM>_

Teď je vše připraveno a můžeme konečne vytvořit obrázek dle Příkladu č. 1:
Opište příkaz u obrázku č. 1 nebo ho vyznačte myší, uložte do schránky příkazem Kopírovat a v černém okně interpretu stiskněte pravé tlačítko myši a zvolte Vložit. Mělo by to vypadat takto:

D:\IM>convert.exe -background lightblue -font Candice -fill black -pointsize 72 label:"Vivien" viviencernytext.png

Po stisku Enter se zdánlivě nestalo nic (pokud jste nezadali řádek s chybou), ale jinak  se aktivoval ImageMagick příkazem convert.exe a provedl všechny funkce zadané parametry a vytvořil výsledný obrázek pojmenovaný viviencernytext.png
Můžete se o tom přesvědčit tak, že znovu zadáte příkaz pro výpis obsahu adresáře DIR a uvidíte, že v něm je už uložený výsledný soubor s obrázkem.
DIR
Svazek v jednotce D je D200
Sériové číslo svazku je 223E-60DA.
Výpis adresáře D:\IM
06.02.2012 00:18 <DIR> .
06.02.2012 00:18 <DIR> ..
06.02.2012 00:18 3 171 viviencernytext.png
Souborů: 1, Bajtů: 3 171
Adresářů: 2, Volných bajtů: 2 397 491 200
D:\IM>


Obrázek už tedy máme vytvořený, ale nevidíme ho. Avšak zobrazí se neuvěřitelně snadno - místo zadání nějakého příkazu zapište přímo jméno obrázku viviencernytext.png:

D:\IM>viviencernytext.png

Interpret příkazů zjistí, že se jedná o obrázek, zavolá automaticky Prohlížeč obrázků a zobrazí Váš první obrázek vytvořený příkazy zadanými interpretu a dále ImageMagicku.

Okno interpretu příkazů vypadá např. takto:


Interpret příkazů si pamatuje všechny dříve zadané příkazy (i včetně chybných). K předcházejícím příkazům se dostanete klávesou Šipka nahoru. Zobrazený příkaz můžete změnit či opravit najetím šipkami vlevo a vpravo na opravované slovo a to změnit. Zkuste si to a vyměňte jméno fontu Candice za font Arial-Black a stiskněte Enter (a to i uprostřed příkazu - klávesa Enter neláme řádek, jen provede příkaz, na kterém je kurzor.)
Zadejte tedy nový upravený příkaz:

D:\IM>convert.exe -background lightblue -font Arial-Black -fill black -pointsize 72 label:"Vivien" viviencernytext.png

Znovu zadejte jméno obrázku viviencernytext.png a uvidíte toto:

Změnu barvy textu provedete analogicky stejným postupem, jen změnou parametru -fill ( výplň písma)

convert.exe -background lightblue -font Arial-Black -fill Red -pointsize 72 label:"Vivien" viviencervenytext.png




Ačkoliv se možná vše jeví jako hubený výsledek, ve svých důsledcích a vazbě na funkce ImageMagicku lze provádět velice složité operace bez šermování myší nad komplikovaným prostředím grafických editorů. Není to samozřejmě jejich náhrada, ale určitě vhodný doplněk zejména opakovaně prováděných operací. Zkuste si sami představit kolik operací v interaktivním grafickém prostředí budete muset udělat, abyste dosáhli stejného a přitom velice jednoduchého výsledku. Navíc nemluvě o tom, že námi použitý příkaz navíc používá speciální syntaxi programu convert.exe,  nedefinující předem velikost podkladu písma. Podklad definuje samo písmo jako minimální prostor, který je třeba pro vyplnění daným textem. Nenechte se mýlit volným prostorem nad textem - ten je vždy rezervován pro velká písmena s diakritikou tak, aby celý text vyplnil prostor a nikde nic "neuniklo".

Výsledný obrázek můžete uložit do jednoho téměř ze stovky grafických formátů, se kterými umí ImageMagick pracovat.

Sám název hlavního programu ImageMagicku convert.exe napovídá, že program umí převádět grafické soubory z libovolného do libovolného jiného formátu s možností vepisování textů s dekorativními prvky, změny velikosti, měřítka, rotací, přebarvováním,  ořezáváním, změnou průhlednosti atd.


Nakonec stručného seznámení s příkazy ImageMagicku v prostředí interpretu přkazů si uveďme vysvětlení k použitým programům a parametrům programu convert.exe systému ImageMagick:
 

cmd.exe interpret příkazů v prostředí Windows 7 (příponu .exe neni třeba při volání uvádět)
convert.exe hlavní konverzní program ImageMagicku 
převádí (konvertuje) mezi obrazovými formáty a mění velikost, zaostřuje, rozostřuje, ořezává, odstraňuje šum, překlápí atd.
identify.exe program ImageMagicku pro informativní výpisy
Příklad: identify.exe -list font >seznamfontu.txt
animate.exe program ImageMagicku pro animaci série obrázků
compare.exe matematický a vizuální popis rozdílů mezi obrázky
composite.exe Program ImageMagicku;
překládá obrázek přes jiný, např. vložení obrázku do průhledného rámu
conjure.exe program ImageMagicku;
interpretuje a spouští skripty napsané v Magick Scripting Language (MSL)
mogrify.exe Program ImageMagicku;
má podobné funkce  jako convert.exe, ale přepisuje vstupní soubor místo ukládání do nového výsledného souboru
montage.exe program ImageMagicku;
vytváří složené obrázky zkombinováním několika samostatných
stream.exe program ImageMagicku;
jednoduchý nástroj pro informativní výpisy a streamování jedné nebo více pixelových složek obrázku do vybraného úložného formátu
Příklad: stream.exe viviencernytext.png -identify -verbose

Význam parametrů programu convert.exe ve výše uvedených příkladech:
vstupní soubor název souboru s obrázkem, nad kterým se provádějí úpravy, ale může to být i barva podkladu, vzor výplně,  dlaždicová výplň podkladu, většinou s doplněním rozměrů velikosti podkladu
výstupní soubor zpravidla poslední parametr, do kterého se ukládá výsledný obrázek; POZOR!!! vyhýbejte se používání názvů adresářů s mezerami a nestandardními znaky a znaky s diakritikou - jinak si zaděláte na budoucí skoro neřešitelné problémy!!!! Linux a Windows jsou v tomto ohledu nekonzistentní a znemožňují nějaké jednotné převody názvů; při použití mezer v názvech je třeba všechny názvy uzavírat do uvozovek!; diakritiku nepoužívejte vůbec - všechny texty se pro interpret příkazů v prostředí Windows musí převádět z CP1250 do kódování Latin 1 a zase ImageMagick pracuje s převodem do formátu UTF8 - nakonec všechny takové převody dokáží znemožnit získání požadovaného výsledku!
-background barva pozadí - lze uvádět standardními názvy používané v Netscape a na internetu; libovolnou barvu lze zadávat obdobně jako na internetu v šestnáctkovém tvaru, např #FF0D0E
-font jméno fontu - lze použít též -family (jméno rodiny písma); protože ImageMagick je postaven na Linuxu, dochází u jmen řezů písma a rodin písma k rozdílům oproti Windows; Black Arial označují Windows jako rodinu (family), ačkoliv se jedná o rodinu písma Arial; Pro ImageMagick je to skutečně písmo rodiny Arial a mezery v názvu řezu písma jsou standardně nahražovány pomlčkou - tedy ve Windows je to rodina Black Arial (s mezerou), pro ImageMagick se musí zadat, že to je řez písma -font Arial-Black; znovu zdůrazňuji: nelze slepě používat názvy, které používají Windows; ImageMagick má další důležitý program indentify.exe, který poskytuje informace o přípustných názvech rodin i řezů písma, názvech barev, použitelných grafických formátech,  obsahu Exif formátů JPG atd.
-family  rodina fontu, např. -family Arial;
pro -family lze uvádět další parametry, např váhu písma -weight, styl písma -style, atd. Tyto parametry jsou ignorovány pro příkaz -font, protože řez písma má již své dané vlastnosti; ImageMagick nerealizuje -style Italic, tedy kurzívu grafickými prostředky, tak jak to většinou provádějí Windows; pro graficky realizovanou kurzívu z kolmého písma je třeba použít jiné příkazy ImageMagic, např. SkewX ve výstupu textu.
-fill výplň či barva písma, ale lze použít i None pro průhledné písmo s obrysy
-pointsize velikost písma v bodech
label: vypisovaný text (POZOR label se neuvádí pomlčkou!!!); pro výpis textů existuje více příkazů, např. -annotate a -draw;
Poznámka: většina popisů ImageMagick je pro Linux a uvádí, že lze pro přechod na nový řádek použít v textu standardní příkaz /n; přes všechny pokusy se mi to ve Windows nepodařilo; možná existuje nějaký způsob, ale nevím jaký; ovšem lze to obejít jiným postupem přes textový soubor, který funguje správně, ale takový soubor se zase musí   překódovat do UTF8 a tím je tu nová komplikace - v tomto případě je lépe být Angličanem bez háčků a čárek nad písmeny!!!
-stroke barva obrysu písma (standardně černá)
-strokewidth tloušťka obrysu písma v bodech (standardně nulová)
-annotate  výpis textu s relativním posunem vůči výchozí pozici; posun se uvádí dvěma čísly s povinným znaménkem  např.  ve tvaru -annotate +40+70 "Vivien";výchozí pozice je standardně v levém horním rohu; výchozí pozici mění speciální příkaz těžiště -gravity s parametrem Center nebo základními světovými stranami North, South, NorthWest, NorthEast, West, East, SouthWest, SouthEast
-size   velikost plochy zadávaná ve tvaru šířkaxvýška, např. -size 300x400
-resize změna velikosti obrázku ve formátu jako -size, tj. šířkaxvýška; formát se vždy mění s respektováním poměru stran původního obrázku a použitím jednoho z údajů jako maximálního; pro zadání pouze šířky stačí zadat jen jeden údaj; pro rozměry bez respektování poměru stran existuje zvláštní syntaxe s doplněním znaku < k číselným údajům;
xc: určení barvy podkladu zadaného rozměrem
-gradient:   plynulý barevný přechod - např. -gradient: yellow-red
-tile dlaždicová výplň, např. pro postupnou výplň podkladu gradientem -tile gradient: white-black
-flatten sloučení průhledných částí obrázku s barvou podkladu
-gravity definice výchozí polohy (těžiště) pro relativní určení pozice textu vůči těžišti; přípustné hodnoty jsou: None, Center,North, South,West, East, NorthWest, NorthEast, SouthWest, SouthEast


Datum poslední úpravy: 6.2.2012
Vaše názory nám můžete poslat na náš email.

Ing. Oldřich Oplatek, CSc.

HOME OPLATEK software