ImageMagick - čarujeme s obrázkami

ImageMagick je šikovný program na robenie základných úkonov s obrázkami, ako napríklad zmenšovanie, otáčanie, preklápanie, zmena formátu, alebo vytváranie animácie. Toto, a všeličo ďalšie, dokáže pomocou krátkeho príkazu v príkazovom riadku. Potrebujete napríklad zmenšiť obrázok do svojho blogu? convert velky_obrazok.jpg –resize 300x300 obrazok.jpg A je to.

Písmo: A- | A+
Diskusia  (29)

Program ImageMagick nájdete na stránke „www.imagemagick.org“. Môžete si ho zadarmo stiahnuť a nainštalovať, používať doma i v práci, môžete ho skopírovať svojim známym. Funguje na operačných systémoch MS Windows, Linux, FreeBSD a Mac OS X. Na internetovej stránke je rozsiahly návod (po anglicky). V tomto článku predstavím niektoré možnosti programu, podľa ktorých si urobíte predstavu, v čom by vám mohol byť užitočný.

Dátové formáty obrázkov

Obrázky môžu byť uložené v rôznych dátových formátoch, ktoré zvyčajne poznáme podľa prípony súboru. Rôzne formáty majú svoje výhody a nevýhody. Najznámejšie z nich sú: BMP Ľahko sa edituje pomocou programu MS Paint (grafický editor štandardne inštalovaný v MS Windows). Súbory zaberajú na disku veľa miesta. GIF Podporuje nanajvýš 256 farieb v jednom obrázku (záleží od grafického programu, či výber oných 256 farieb prispôsobí konkrétnemu obrázku, alebo sa bude snažiť obrázok prispôsobiť svojim štandardným 256 farbám). Umožňuje priesvitnosť a animácie. JPG Ukladá fotografie do pomerne malých súborov za cenu určitého rozmazania. Ak na fotografii nie sú drobné detaily a ostré prechody, vyzerá na pohľad takmer rovnako. Treba skúšať s rôznymi nastaveniami kvality; záleží od konkrétneho obrázku, ako to dopadne. PNG Asi najlepší formát na všetky obrázky (okrem fotografií, ktoré možno uložiť aj úspornejšie). Umožňuje aj čiastočnú priesvitnosť. Neumožňuje animácie.

Skryť Vypnúť reklamu
Článok pokračuje pod video reklamou

Formát

Farby

Veľkosť súborov

Priesvitnosť

Animácie

BMP

všetky

veľké

nie

nie

GIF

256

malé

áno

áno

JPG

všetky, rozmazané

veľmi malé

nie

nie

PNG

všetky

malé

áno, aj čiastočná

nie

Obrázok zmeníme z jedného formátu do druhého príkazom „convert“. Prvý parameter je názov existujúceho obrázku, druhý parameter je názov obrázku, ktorý sa má vytvoriť. Ak má byť výsledný obrázok typu JPG, môžeme zadať požadovanú kvalitu od 0 do 100 (štandardne je 75). convert obrazok.bmp obrazok .pngconvert obrazok.bmp –quality 50 obrazok .jpg

V nasledujúcich príkladoch bude ako pokusné zviera použitý medveď hnedý (Ursus arctos).

Maco (Ursus arctos)
Maco (Ursus arctos) 

Veľkosť a otočenie

Obrázok zväčšíme alebo zmenšíme pomocou parametra „-resize“; zadáme veľkosť v percentách alebo maximálnu veľkosť v pixeloch.convert maco.jpg –resize 25% maco_maly.jpgconvert maco.jpg –resize 50x50 maco_maly.jpg

Skryť Vypnúť reklamu

Údaj „50x50“ znamená, že zmenšený obrázok sa musí zmestiť do veľkosti 50 × 50, ale so zachovaným pomerom strán. Keďže pôvodný obrázok má 200 × 140 pixelov, do danej veľkosti sa zmenší 50 × 35 pixelov.

Malý maco
Malý maco 

Obrázok preklopíme zvislo pomocou parametra „-flip“ a vodorovne pomocou parametra „-flop“.convert maco.jpg –flip maco_flip.jpgconvert maco.jpg –flop maco_flop.jpg

Zvislo preklopený maco
Zvislo preklopený maco 
Vodorovne preklopený maco
Vodorovne preklopený maco 

Obrázok otočíme pomocou parametra „-rotate“; zadáme uhol v stupňoch. Ak otáčame okolo uhla, ktorý nie je násobkom 90°, výsledný obrázok sa zväčší tak, aby sa doňho zmestil celý pôvodný obrázok. Farbu pozadia zadáme pomocou parametra „-background“; slovom alebo ako červenú, zelenú a modrú zložku farby. (Zoznam možných slov nájdete v adresári programu, v súbore „config/colors.xml“.)convert maco.jpg -background AliceBlue -rotate 45 maco_rot45.jpgconvert maco.jpg -background rgb(240,248,255) -rotate 45 maco_rot45.jpg

Skryť Vypnúť reklamu
Šikmo otočený maco
Šikmo otočený maco 

Efekty

Obrázok zmeníme na čiernobiely pomocou parametra „-monochrome“. Negatív vytvoríme pomocou parametra „-negate“.convert maco.jpg –monochrome maco_mono.jpgconvert maco.jpg –negate maco_neg.jpg

Čiernobiely maco
Čiernobiely maco 
Negatívny maco
Negatívny maco 

Obrázok podfarbíme pomocou parametra „-colorize“ alebo „-tint“; zadáme mieru podfarbenia v percentách. Rozdiel medzi týmito efektmi je v tom, že „-colorize“ podfarbuje všetky body obrázku rovnomerne, kým „-tint“ podfarbuje najmä sivé odtiene a ponecháva výrazné farby. Farbu podfarbenia zadáme pomocou parametra „-fill“.convert maco.jpg -fill VioletRed -colorize 25% maco_color.jpgconvert maco.jpg -fill VioletRed -tint 25% maco_tint.jpg

Skryť Vypnúť reklamu
Podfarbený maco
Podfarbený maco 
Inak podfarbený maco
Inak podfarbený maco 

Pomocou parametra „-charcoal“ premeníme obrázok na kresbu uhlíkom. Pomocou parametra „-paint“ ho premeníme na kresbu vodovými farbami. Pomocou parametra „-emboss“ ho premeníme na reliéf. Ku každému z týchto parametrov treba zadať číslo určujúce hrúbku uhlíka, hrúbku štetca, prípadne hrúbku reliéfu. Správne hodnoty získame experimentovaním.convert maco.jpg -charcoal 2 maco_coal02.jpgconvert maco.jpg -charcoal 10 maco_coal10.jpgconvert maco.jpg -paint 2 maco_paint.jpgconvert maco.jpg -emboss 2 maco_boss.jpg

Maco kreslený tenkým uhlíkom
Maco kreslený tenkým uhlíkom 
Maco kreslený hrubým uhlíkom
Maco kreslený hrubým uhlíkom 


Maco kreslený vodovkami
Maco kreslený vodovkami 
Reliéfny maco
Reliéfny maco 

Kreslenie

Obrázok orámujeme pomocou parametra „-frame“; zadáme šírku zvislej časti rámu a výšku vodorovnej (o toľko sa obrázok zväčší na každej strane), vonkajšiu a vnútornú hĺbku. Farbu rámu zadáme pomocou parametra „-mattecolor“.

Pomocou parametra „-draw“ môžeme na obrázok kresliť a písať. K tomu patrí pár pomocných parametrov. Typ písma určí „-font“. (Treba zadať súbor na disku; hľadajte niekde v adresári „C:\Windows“ alebo „C:\WINNT“, v podadresári „Fonts“, súbory s príponou TTF. Tučné a šikmé písma sú uložené v samostatných súboroch.) Veľkosť písma určí „-pointsize“, farbu písma „-fill“.

Pomocou parametra „-gravity“ si prepneme súradnicovú sústavu… ak ideme písať text do pravého dolného rohu, je jednoduchšie mať tam aj stred súradnicovej sústavy. Možné hodnoty sú „Center“ (stred súradnicovej sústavy v strede obrázku), „North“ (hore; teda v strede hornej hrany obrázku), „East“ (vpravo), „South“ (dole), „West“ (vľavo), „NorthWest“ (v ľavom hornom rohu; to je štandardná súradnicová sústava), „NorthEast“, „SouthWest“ a „SouthEast“. Ak súradnicová sústava začína naspodku obrázku, Y-ová os smeruje nahor; ak začína v pravej časti obrázku, X-ová os smeruje doľava. Nie je to také zložité, ako to znie…

Teraz bude nasledovať dlhý príkaz, ktorý urobí niekoľko vecí naraz; kvôli prehľadnosti je rozpísaný na viacero riadkov, ale treba ho zadať do jedného riadku. Vezme obrázok; urobí okolo neho rám čokoládovej farby (hrúbky 20, čiže obrázok bude vyšší aj širší o 40 pixelov; s vonkajšou hĺbkou 4 a vnútornou 8); pripraví si súradnicovú sústavu a písmo (Verdana, tučné); vypíše text (dvakrát; pod bielym nápisom urobí o jeden pixel posunutý čierny nápis, malý trik na zvýšenie kontrastu); a výsledok uloží do nového obrázku. Takže:convert maco.jpg -mattecolor chocolate -frame 20x20+4+8 -gravity SouthEast -font "C:\WINNT\Fonts\verdanab.ttf" -pointsize 10 -fill black -draw "text 19,19 'http://bur.blog.sme.sk/'" -fill white -draw "text 20,20 'http://bur.blog.sme.sk/'" maco_frame.jpg

Maco v rámčeku s podpisom
Maco v rámčeku s podpisom 

Takýto dlhý príkaz nepíšem priamo na klávesnicu, ale pripravím si ho do textového súboru, aby som vychytal preklepy. Je to už trochu zložitejšie, ale myslím si, že stále menej práce, ako robiť rovnaký efekt povedzme v MS Paint. Najmä ak by som takto chcel upraviť naraz viacero obrázkov. Čím sa dostávame asi k najväčšej výhode tohoto programu…

Hromadné spracovanie

Výhody príkazového riadku oproti „klikavému“ spôsobu práce sa viditeľne prejavia napríklad vtedy, keď treba naraz spracovať množstvo údajov. Orámovať a podpísať jeden obrázok by asi bolo pohodlnejšie v nejakom grafickom editore. Lenže čo keby tých obrázkov bolo tisíc?

Príklad z praxe – máte stovky digitálnych fotografií z dovolenky, a chcete ich dať na internet alebo napáliť na CD. Ak majú fotografie veľké rozlíšenie, ľahšie sa prezerajú, pokiaľ vyrobíte zoznam ich zmenšených náhľadov, na ktoré môžete kliknúť. Ale komu by sa chcelo takto spracovávať stovky súborov?

Stačí jednoduchý program – uložte ho na disk, upravte konštanty a spustite ho.

ZoznamFotiek.vbs

' Podadresar s obrazkami Const ADRESAR_OBRAZKY = "obrazky" ' Podadresar, kam pojdu zmensene obrazky (musi uz existovat) Const ADRESAR_MALE = "obrazky\male" ' Subor, do ktoreho sa ulozi zoznam Const SUBOR_ZOZNAM = "zoznam.html" ' Pouzite pripony obrazkov (malymi pismenami, bez medzier) Const PRIPONY = "bmp;jpeg;jpg;gif;png" ' Velkost zmenseneho obrazku Const VELKOST = 200 ' Pocet zmensenych obrazkov v jednom riadku tabulky Const POCET_V_RIADKU = 4 ' Adresa k nainstalovanemu programu "convert.exe" Const CONVERT = "C:\Program Files\ImageMagick-6.2.0-Q16\convert.exe"Set Shell = WScript.CreateObject("WScript.Shell")Set FileSystem = CreateObject("Scripting.FileSystemObject")OutStreamPath = FileSystem.getFolder(".").Path & "\" & SUBOR_ZOZNAMSet OutStream = FileSystem.OpenTextFile(OutStreamPath, 2, True)OutStream.WriteLine "<html><head><title>Zoznam</title></head><body><table>"Set InFolder = FileSystem.getFolder(ADRESAR_OBRAZKY)Set OutFolder = FileSystem.getFolder(ADRESAR_MALE)Column = 0For Each InFile In InFolder.Files InFileName = InFile.Name DotIndex = InStrRev(InFileName, ".") If 0 < DotIndex Then Extension = LCase(Mid(InFileName, DotIndex + 1)) If 0 < InStr(";" & PRIPONY & ";", ";" & Extension & ";") Then OutFileName = "mini_" & InFileName InFileLink = Replace(ADRESAR_OBRAZKY & "\" & InFileName, "\", "/") OutFileLink = Replace(ADRESAR_MALE & "\" & OutFileName, "\", "/") Shell.Run """" & CONVERT & """ " & InFile.Path _ & " -resize " & VELKOST & "x" & VELKOST _ & " " & OutFolder.Path & "\" & OutFileName, , True If 0 = Column Then OutStream.WriteLine "<tr>" OutStream.WriteLine "<td>" _ & "<a href=""" & InFileLink & """>" _ & "<img src=""" & OutFileLink & """/></a></td>" Column = Column + 1 If POCET_V_RIADKU = Column Then OutStream.WriteLine "</tr>" Column = 0 End If End If End IfNextIf 0 <> Column Then Do While Column < POCET_V_RIADKU OutStream.WriteLine "<td>&nbsp;</td>" Column = Column + 1 Loop OutStream.WriteLine "</tr>"End IfOutStream.WriteLine "</table></body></html>"OutStream.Close

Ak sa vám program zapáčil, stiahnite si inštalačku (tú, čo má v názve „Q16-windows-dll”) a začnite experimentovať!

Na niektorých verziách MS Windows si operačný systém vyhradil príkaz „convert“ pre seba (určite na niečo „dôležité“, čo bežný človek nepoužije ani raz za život). Ak je to váš prípad, jednoducho choďte do programového adresára, program „convert.exe“ skopírujte napríklad na „konvert.exe“ a používajte ho pod týmto názvom.

Viliam Búr

Viliam Búr

Bloger 
  • Počet článkov:  42
  •  | 
  • Páči sa:  1x

Programátor. Zoznam autorových rubrík:  Medzinárodný jazykManipulácia a kultyPočítačové programyPostrehy a úvahyVeci verejné

Prémioví blogeri

Skryť Zatvoriť reklamu