Rengeteg szoftver áll a rendelkezésünkre Linuxon a képeink rendezésére, ráadásul a képmanipulációs igényüket is kiszolgálják a legtöbb esetben. De az ImageMagick (Convert, Montage, Animate, Interfaces, Composite, Mogrify, Conjure, Compare, Import, Identify, Display, Stream) és néhány erre épülő parancssori eszközt meg kell említeni, mivel sok alkalmazás alapjait képezik. A gyakorlatban egy ilyen eszközkészlettel akár egy saját rajzoló program készíthetünk Online vagy Asztali kivitelben. Az alkalmazástól egy Light UI választ el bennünket . F-Spot Fotókezelő Gthumb képmegjelenítő ImgSeek Gimp De jó ha tudjuk, hogy egyszerűen, parancssorból a Convert (ImageMagick) binárisok segítségével mi magunk is tudunk akár hasonló szoftvert gyártani, vagy képeinket manipulálni. A leírtakhoz szükség lesz az ImageMagick telepítésére: apt-get install imagemagick; Kép átméretezés A képek új méretét megadatjuk %-os formában vagy pixelben is. A -resize vagy -scale után adjuk meg a kép új méretét szélleség x magasság formátumban. (pl.: 200×150 pixel vagy 10%x15%). A következő paraméter az Input fájl majd az kimeneti fájl neve. convert [-paraméterek] [input fájl] [output fájl] convert -resize 10%x15% gyor.jpg szazalek_10x15_gyor.jpg convert -resize 200×150 gyor.jpg pixel_200x150_gyor.jpg
Kimenet tömörítésének beállítása: Az előzményekben leírt paraméterek maradnak de kiegészítjük a -quality érték [0-100] párossal. Az új kép az értéknek megfelelően lesz tömörítve. Tapasztalat alapján a 75 alatti értékek már jól látható változásokat okoznak, ezért inkább nagyobb számokat használjunk. convert -resize 200×150 -quality 20 gyor.jpg pixel_200x150_gyor.jpg JPEG/MIFF/PNG fájloknál Kép formátum konvertálás A művelet elvégzéséhez az Input fájl nevét és az kimeneti fájl nevét kell megadni. A kiterjesztések alapján a megfelelő formátumba kerül a végeredmény. convert gyor.jpg gyor.png Kép forgatása A kép elforgatásához a fogatás fokát kell megadnunk (-rotate 90). convert -rotate 90 gyor.jpg forgatas_90_gyor.jpg convert -rotate -90 gyor.jpg forgatas-90_gyor.jpg
Kép effektek: A convert segítségével akár effekteket is készíthetünk képünkből. Ezek a műveletek jóval lassaban hajtódnak végre. Valahol ez az a pont mikor elfelejthetjük a saját grafikus alkalmazás fejlesztését. A műveletek némelyike komoly erőforrásokat igényel. convert -sketch 10 gyor.jpg sketch_gyor.jpg convert -sketch 30 gyor.jpg sketch_30_gyor.jpg convert -solarize 20 gyor.jpg solarize_gyor.jpg convert -swirl 45 gyor.jpg swirl_gyor.jpg & convert -wave 100×300 gyor.jpg wave_gyor.jpg
Szöveg elhelyezése a fotón Vízjelet is rakhatunk a képre, sőt az Exif információkat is manipulálhatjuk, törölhetjük. Ha nem adunk meg font paramétereket akkor az alapértelmezett színekkel, betűkészlettel és mérettel fog megjelenni a szöveg. convert -draw ‘text 50,50 “Lorem ipsum Dolor Ament”‘ gyor.jpg text_gyor.jpg -draw paraméter text 50,50 a kíírás kezdő kordinátája. convert -fill red -pointsize 40 -draw ‘text 20,30 “Lorem ipsum Dolor Ament”‘ gyor.jpg text40_gyor.jpg -fill red a festés színe -pointsize 40 a betű képpontjainak mérete
Képinformációk kinyerés Egy fotó rengeteg olyan információt hordoz (EXIF adatokat), amiket megjeleníthetünk vagy akár törölhetünk is. Az EXIF adatokat magunk is módosíthatjuk, vagy méret csökkentés céljából akár törölhetjük is. Elhelyezhetünk képekben szerzőre vonatkozó információkat, de extrém esetben akár titkosított állományt is (ez utóbbit nem ismertetném . Néhány infó mit tartalmazhat egy kép: Fényképezőgép típus Fényképezési beállítások Formátum Méret Minőség, tömörítési arány Színmélység Milyen szoftverrel pofozgatták
Milyen szoftverrel pofozgatták stb.. Megjelenítése: identify [képnév.ext] A visszatérési értékek akár egyenként is ki lehet nyerni a formátum megadásával. (-format). identify gyor.jpg alap információkat szolgáltat JPEG 600×610 600×610+0+0 DirectClass 8-bit 62.9766kb identify -verbose gyor.jpg Ha bekapcsoljuk a bőbeszédű üzemmódot akkor rengeteg információt kapunk Kép részlet kivágása A tárgy képből kiragadunk egy 320×200 pixeles darabot a 200,300 (x,y) pixel kezdőponttól.
convert gyor.jpg -crop 300×200+200+300 crop_gyor.jpg vagy daraboljuk fel a képet 100×100 kockákra: convert -crop 100×100 gyor.jpg crop100x100_gyor.jpg Csoportos műveletek Bash: 1. for j in `ls *.jpg`; do convert -resize 200×150 -quality 75 $j s_$j; done A beépített grafikus felületen történő képszerkesztésre a display is alkalmazható: display [kepnev.ext]
Letölthető állományok: A leíráshoz csatoltam egy LAMP webszerveren működő böngészőben futtatható PHP programot, valamint a parancssoros változatát. A progi egy adott mappában található nagyméretű képekből elkészíti a kisméretű változatot, adott formátumban. Ha a sh_ kiterjesztésű fájlt bemásoljuk az /usr/bin könyvtárba, akkor globálisan elérhető lesz. A jogosultságról ne feledkezzünk el. A letöltések között található továbbá a teljes kép és kód állomány, amit teszteléshez használtam. Webszerverről működő változat. Előtte be kell állítani az útvonalakat, kiterjesztéseket, méretet, minőséget. set_time_limit(0); error_reporting(0);
error_reporting(0); /* Forrás képek helye */ $input_dir=”/var/www/test/bence/”; /* Cél képek helye */ $output_dir=”/var/www/test/bence/s/”; /* mappa létrehozás */ if(!file_exists($output_dir)){ mkdir($output_dir, 0777); } /* forrás kiterjesztése */ $input_ext=”jpg”; /* kimenet kiterjesztése */ $out_ext=”jpg”; /* kimenet mérete * -resize 10%x15% * -resize 300×200 * */ $out_size=”-resize 400×400″; /* kimenet minősége * 0-100 * 75< x <100 elfogadható minőség * */ $out_quality=”-quality 75″; /* fajlok és műveletek */ $fajlok=scandir($input_dir); foreach($fajlok as $fajl){ if(preg_match(“/{$input_ext}/i”, $fajl)){ $out_fajl=str_replace(“{$input_ext}”, “{$out_ext}”, strtolower($fajl)); system(“convert $out_size $out_quality {$input_dir}{$fajl} {$output_dir}{$out_fajl}”); chmod (“{$output_dir}{$out_fajl}”, 0777); } } ?> Shell Script változat: #! /usr/bin/php set_time_limit(0); error_reporting(0); $help=<<————————————————————– sh_batch_img.php [/input/dir/] [/output/dir/] [input extension(jpg|png|gif|..)] [output extension(jpg|png|gif|..)] [size(400x400|15%x20%)] [quality(0-100)] script.php input_dir output_dir input_ext output_ext size quality for j in `ls *.jpg`; do convert -resize 200×150 -quality 75 $j s_$j; done pl.: sh_batch_img.php /home/kep/nagy/ /home/kep/pici/ png jpg 150×100 75 ————————————————————– HELP; $c=sizeof($argv); if($c<=1){ die(“keves parameter!n”.$help); }
//print_r ($argv); //exit; /* Forrás képek helye */ $input_dir=$argv[1]; /* Cél képek helye */ $output_dir=$argv[2]; /* mappa létrehozás */ if(!file_exists($output_dir)){ mkdir($output_dir, 0777); } /* forrás kiterjesztése */ $input_ext=$argv[3]; /* kimenet kiterjesztése */ $out_ext=$argv[4]; /* kimenet mérete * -resize 10%x15% * -resize 300×200 * */ $out_size=”-resize {$argv[5]}”; /* kimenet minősége * 0-100 * 75< x <100 elfogadható minőség * */ $out_quality=”-quality {$argv[6]}”; /* fajlok és műveletek */ $fajlok=scandir($input_dir); foreach($fajlok as $fajl){ if(preg_match(“/{$input_ext}/i”, $fajl)){ $out_fajl=str_replace(“{$input_ext}”, “{$out_ext}”, strtolower($fajl)); system(“convert $out_size $out_quality {$input_dir}{$fajl} {$output_dir}{$out_fajl}”); chmod (“{$output_dir}{$out_fajl}”, 0777); } } ?> Könyvajánló: http://www.packtpub.com/imagemagick/book nincs kapcsolódó bejegyzés.
Téma: Webalkalmazás fejlesztés Forrás: http://opendir.hu Szerző: ArtH2O Erdeti URL: http://opendir.hu/webalkalmazas/php/242-kepmanipulacio-parancssorban/