ImageMagick trükkök tömeges műveletekhez

Az ImageMagick egy nagyszerű eszköz, ha képekkel akarunk különböző automatizált műveleteket végezni. És ehhez rengeteg eszközt nyújt.

A legegyszerűbb eszköz a convert, amivel egy képből elő tudunk állítani egy másikat. De természetesen nem csak egy képre működik, hanem képek egy csoportjára is. Ami az egyik legfontosabb, hogy a műveleteket egymásra halmozhatjuk, és azok a megadás sorrendjében fognak lefutni.
Például, ha egy képet át akarunk méretezni és konvertálni egy másik formátumba:

$ convert -resize 640x480 image.png image.jpg

Ekkor az image.png fájlt át fogja méretezni úgy, hogy egy 640 pixel széles és 480 pixel magas dobozba beleférjen, megtartva a kép arányait. Az eredményt ezután el fogja menteni image.jpg néven (és természetesen JPEG formátumban).
Ha például még fekete-fehérré is át akarjuk konvertálni közben akkor:

$ convert -resize 640x480 -type GrayscaleMatte image.png image.jpg

Természetesen ha a képeink nem arányosak a 640×480 aránnyal, akkor az eredményül kapott kép kisebb lesz, mint 640×480 pixel. Előfordulhat, hogy mi mégis 640×480 méretű képet szeretnénk. Ehhez jó lenne, ha a vásznat az is megnövelné úgy, hogy a szélekre rakjon valami háttérszínt.

$ convert -resize 640x480 -type GrayscaleMatte -background "#ffffff" -gravity center -extent 640x480 image.png image.jpg

Ekkor fehér háttérrel lesz kitöltve a kép, majd erre pakolja fel a képünket, középre rendezve mind függőlegesen, mind vízszintesen, és természetesen a vásznat átméterezve 640×480 pixelre. Természetesen játszhatunk mind a háttérszínnel, mind a kép elrendezésével is a nagyobb vásznon. Ha például átlátszó hátteret szeretnénk, akkor adjunk meg -background none -t. Természetesen a színeket megadhatjuk többféle formátumban is, nem csak a példában bemutatott hexadecimálisban. Használhatunk RGB, RGBA, HSL, HSLA, CMYK illetve CMYKA értékeket is a CSS megadásnak megfelelően, például -background "rgba(255,0,0,0.5)" .

Az elrendezéshez a -gravity értékét kell módosítanunk NorthWest , North , NorthEast , West , Center , East , SouthWest , South , SouthEast értékek közül választva.

Amennyiben a képet trim-melni szeretnénk (azaz a széleken levő azonos színű (illetve átlátszó) részt le szeretnénk vágni a képről), akkor használjuk a -trim kapcsolót. Ha nem pontosak a színek, hanem egy tartományba esnek, akkor használhatjuk a -fuzz kapcsolót, aminek megadhatjuk relatív és abszolút értékkel is, milyen tartományt találjon egyezőnek. Az előzőt bővítve tehát így nézne ki a parancs:

$ convert -trim -resize 640x480 -type GrayscaleMatte -background "#ffffff" -gravity center -extent 640x480 image.png image.jpg

Ez előbb levágja a szélekről az egyező színt, majd átméretez, fekete-fehérré alakít, majd fehér háttérrel középre rendezve létrehoz egy 640×480 méretű képet.

mogrify

A mogrify annyiban különbözik, hogy a képekkel helyben dolgozik, azaz a megadott képeket felülírja (kivéve ha más kimeneti fájlformátumot adunk meg a -format kapcsolót használva).

$ mogrify -resize 320x240 -background none -format png *.png

Ekkor az összes a könyvtárban levő PNG fájlt átméretezi 320×240 pixelesre, átlátszó háttérrel lementi őket, felülírva az eredeti fájlokat.

montage

A montage program segítségével pedig több képből tudunk egy montázst készíteni, azaz több képet tudunk egy nagy képre helyezni.

$ montage -background "#ffffff" -tile 4x1 -geometry +0+0 image_1_[1-4].png image_1.jpg

Ekkor az image_1_1.png , image_1_2.png , image_1_3.png , image_1_4.png képeket egy image_1.jpg nevű képbe egyesíti úgy, hogy a 4 kép kerül egymás mellé egy sorba. A -tile 4x1 határozza meg, hogy mennyi elem kerüljön egy sorba, és hány sor legyen. A -geometry +0+0 határozza meg, hogy ezek a képek milyen közel kerüljenek egymáshoz vízszintesen illetve a sorok függőlegesen. Ebben az esetben közvetlenül egymás mellé kerülnek az elemek. A -geometry +1+1 esetén pedig a képek között lenne egy egy pixeles rés mind a sorok mind az oszlopok esetén.
A montage ideális sprite-ok készítésére, ami nagyon hasznos tud lenni, ha kevesebb képet akarunk a felhasználóval letöltetni, mivel több képet egyel helyettesítünk.

comments powered by Disqus