Digimanie: Digimanie: Pozor! Přichází kouzelník!
  Sv─¢t hardware Sv─¢t PDA DigiManie Sv─¢t s├¡t├¡  
23.7.2003  
Tituln├¡ str├ínka       Slovn├¡k       Inzerce       Kontakty       O n├ís


Pozor! Přichází kouzelník!
(David Dvořák, 29.4.2003, zpráva)
Potřebujete zpracovávat větší množství obrázků stále stejným způsobem? V tom případě máte hned několik možností - buď se můžete "uklikat" k smrti anebo překonáte předsudky a vrátíte se ke staré dobré příkazové řádce. Ano, řeč bude o dávkovém zpracování!
Doporu─ìit ─ìl├ínek  Tisknout ─ìl├ínek

Pokud jste jako já někdy narazili na problém zpracovávat velká kvanta obrázků, možná jste už dávno našli řešení, které vám začalo vyhovovat. Pokud ne, nevadí, dneska si povíme něco víc o možnostech, které máme.

Jsa "odkojen" UNIXovými operačními systémy (no, abych si zas tolik nefandil, tak pouze BSD a Linux :-)), již dávno jsem narazil na program ImageMagick. A že se skutečně jedná o kouzelníka a to ne ledajakého! Tedy abych byl přesný, nejedná se jen o jeden program ale o celou skupinu programových utilit, z nichž je každá určena pro něco jiného. Je sice fakt, že jejich nativním prostředím je UNIX a různé jeho klony, nicméně existuje i verze pro Windows, MacOS a další. Možnosti prográmků jsou ve všech těchto systémech prakticky totožné, jen ty, které používají vlastnosti X Window jsou poněkud omezeny.


A co všechno je tedy k dispozici? Stručně si prográmky shrňme:

  • Animate - slou┼╛├¡ k zobrazen├¡ animace v X Window
  • Combine - dok├í┼╛e r┼»zn├╜mi zp┼»soby slou─ìit obr├ízky do jednoho
  • Convert - slou┼╛├¡ k p┼Öevodu form├ít┼», velikosti obr├ízk┼», atd.
  • Display - program, kter├╜ vykresl├¡ libovoln├╜ z podporovan├╜ch form├ít┼» na X Window
  • Identify - ur─ì├¡ o jak├╜ typ sn├¡mku se jedn├í a dok├í┼╛e vypsat i podrobnou statistiku
  • Import - slou┼╛├¡ ke sn├¡m├ín├¡ libovoln├⌐ho programov├⌐ho okna, pop┼Ö├¡pad─¢ cel├⌐ho X desktopu
  • Mogrify - v podstat─¢ tot├⌐┼╛ co Convert, jen s t├¡m rozd├¡lem, ┼╛e zm─¢ny aplikuje p┼Ö├¡mo na zdrojov├⌐ obr├ízky
  • Montage - dok├í┼╛e vytvo┼Öit mozaiku z n─¢kolika obr├ízk┼»
  • Xtp - umo┼╛┼êuje pracovat s obr├ízky v s├¡┼Ñov├⌐m prost┼Öed├¡

Nebudeme se věnovat všem prográmkům z výše uvedeného výčtu (snad jen v případě případného většího zájmu čtenářů), ale konkrétně upřeme svou pozornost na program Convert. V úvodu článečku jsme se rozhodli provádět hromadné úpravy snímků a pro tuto činnost je opravdu přímo stvořený. Repertoár jeho nástrojů je velmi široký a nemá smysl se tady věnovat úplně všem. Nicméně mohu říct, že prográmek dokáže obrázky zmenšovat, různě rotovat, dělat kolem nich rámečky, vkládat do nich text, složit několik snímků do jediného cílového souboru, vytvořit výřez obrázku či do něj něco přikreslit. Možností je skutečně hodně, nicméně my se budeme věnovat jen pár základním.

Ale ještě předtím si specifikujme, co vlastně chceme s obrázkem provádět. Vezměme si tuto modelovou situaci: máme snímky v rozlišení 2048 x 1536 bodů a potřebujeme je všechny upravit na rozlišení 300 x 300 bodů. Samozřejmě požadujeme, aby byl upraven histogram, aby byly snímky doostřeny, případně také zbaveny "zrn". To by nám pro začátek mohlo stačit.

Jak tedy na to? Předně upravíme histogram obrázku a to velmi jednoduše přidáním parametru equalize, dále snímek "vylepšíme" pomocí parametru enhance a zbavíme zrn díky volbě despeckle.

Úpravu rozlišení provádíme pomocí parametru geometry. Jeho přesnou syntaxí zápisu se nebudeme zabývat, protože tu nalezne každý čtenář v manuálových stránkách k programu (i ve Windows). Pro jednoduché zmenšení rozměrů stačí zapsat

geometry 300x300, popřípadě jen geometry 300.

Tato syntaxe zachovává poměr stran, takže se nemusíte obávat, že by se případná kratší strana "natáhla", čímž by se snímek zdeformoval. (Nicméně, pokud byste o tento efekt stáli, přidejte za zápis vykřičník.)

Výborně, v této chvíli již víme i to, jak obrázek zmenšit! Nakonec provedeme doostření výsledného snímku. Opět toho dosáhneme velmi jednoduše díky parametru sharpen, za který napíšeme číslo, které udává úroveň zaostření (v rozmezí 0-99,9%).

Tedy podtrženo a sečteno použijeme k úpravě snímku následující kompletní příkaz (je funkční i pod OS Windows):

convert -enhance -despeckle -equalize -geometry 300x300 -sharpen 25 obrazek.jpg th_obrazek.jpg

Samozřejmě, že kdybych prováděl úpravu pro každý snímek zvlášť, tak bych sice nějaký čas ušetřil, nicméně bych musel pořád zapisovat další a další jména souborů a jejich hotových podob. Což se mi samozřejmě nechce (a i kvůli tomu jsem si našel ImageMagick :-)). Proto je mnohem lepší si napsat krátký skript, který je schopen aplikovat výše uvedené pravidlo hromadně na všechny snímky. Jednoduchá podoba by mohla být následující (pro UNIX):


#!/bin/sh
# skript provádí hromadnou konverzi obrazových souborů na rozlišení 300x300 dpi, přičemž
# se stará i o jisté vylepšení snímků

for snimek in *
do
convert -enhance -despeckle -equalize -geometry 300x300 -sharpen 25 $snimek "th_"$snimek
done


V UNIXu potom stačí tento skript uložit pod nějakým vhodným jménem (pro naše účely třeba zmenseni) a nastavit mu práva na spuštění (chmod 755 zmenseni). Pak již na příkazové řádce stačí jednoduše zadat například

>zmenseni *.jpg

přičemž ihned nato systém spustí skript zmenseni, který na všechny obrázky v daném adresáři, které jsou ve formátu jpg, aplikuje konverzní utilitu convert. Jak snadné a jak jednoduché!

Ve Windows lze něco podobného pro příkazový řádek napsat také, nicméně v tomto místě se jako autor přiznávám, že zde mé znalosti selhávají. Kromě příkazového řádku se však ve Windows dá použít i Windows Script Host, o němž se dozvíte víc na domovských stránkách ImageMagicku. Možná, že časem nakonec uvedu i toto řešení, uvidíme :-).

Samozřejmě si uvědomuju, že "dávkové" zpracování umožňují i takoví grafičtí giganti jako Photoshop, Corel a koneckonců i Gimp. Ovšem jít s nimi na tak "triviální" úpravy je stejné jako jít s dělem na vrabce. Možnosti ImageMagicku (vlastně jen programu Convert, na ostatní se ani nedostalo) jsem ani náhodou nevyčerpal všechny. Zcela jistě bych ale ještě neměl zapomenout na možnost vkládání jeho knihoven do různých programovacích jazyků (např. C, C++, Java, Perl, Python, ...), čímž dostáváte do rukou skutečně impozantní nástroj pro všelijaké hříčky.


 Pr┼»m─¢r 1,33
nejnej
hodnoceni
stupnice
  Hodnotili 3 ─ìten├í┼Öi  
1 2 3 4 5