István mai cikkéből megtudhatjuk, hogy a PHP nem csak karakteres megjelenítésre alkalmas, hiszen segítségével képeket is létrehozhatunk, és manipulálhatjuk azokat!
Leggyakrabban CAPTCHA készítésére alkalmazzák a PHP képkezelő függvényeit, de statisztikai elemzésekre is kiválóan alkalmas.
Nézzünk egy példát, arra, hogyan tudunk 3D-s kördiagramot készíteni a weblapunk látogatottságáról.
Ebben a példában a böngészők megoszlását vizsgáljuk.
A használatban lévő böngésző nevét kinyerhetjük a get_browser() függvénnyel, vagy a $_SERVER tömb HTTP_USER_AGENT eleméből.
Most ezt a változatot tekintjük át.
Egy változóba írjuk bele a fenti értéket:
$browser_info=$_SERVER[’HTTP_USER_AGENT’];
Ha kiíratjuk ezt az értéket, valami ilyesmit fogunk látni:
Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0.1
Látható, hogy / karakterek határolják el az egyes információkat.
Ha ezek mentén szétvágjuk a stringet, akkor az utolsó előtti elem lesz a böngészőnk fajtája. Az explode függvényt használva vágjuk szét a változónk értékét, és az utolsó előttit raktározzuk el egy újabb változóban.
$browser_array=explode(’/’,$browser_info);
$m=count($browser_array)-2;//$m az utolsó előtti elem. (count() -> a tömb elemszáma)
$browser=trim($browser_array[$m]);//trim() az esetleges szóközöket eltünteti
Most a $browser változónk tartalmazza a böngészőnk nevét. Ezt az adatot egy fájlban, vagy adatbázisban tárolva számolhatjuk, hogy milyen böngészővel, hányszor látogatták meg az oldalunkat.
Nyerjük ki az adatbázisunkból, vagy fájlunkból a böngészőkre vonatkozó adatokat. Ebben a példában tetszőleges számokat választottunk. Az adatokat helyezzük el egy tömbben.
$data=array(814,324,112,65);
A tömb elemei sorrendben: Firefox, Chrome, IE, és egyéb böngészők száma. Most alakítsuk át ezeket a számokat százalék-lábakká:
$sum=$data[0]+$data[1]+$data[2]+$data[3]; //$sum: az összes látogatás
$percent=array($data[0]/$sum*100, $data[1]/$sum*100, $data[2]/$sum*100, $data[3]/$sum*100);//a százaléklábak egy tömbbe pakolva
Ahhoz, hogy képet hozzunk létre, be kell állítani a tartalomtípust.
Ezt a header függvénnyel tesszük meg:
header(’Content-type:image/png’);//png kép létrehozása
Mivel a header előtt nem állhat kimenet, célszerű – sőt, általában elengedhetetlen – ezt a sort a php oldalunk legelejére beszúrni, ahogy a következőt is, ami létrehozza a képet:
$pic=imagecreate(400,400);//400*400 pixeles kép létrehozása.
Most hozzuk létre a színeket:
$white=imagecolorallocate($pic,255,255,255);
$orange1=imagecolorallocate($pic,255,200,0);
$orange2=imagecolorallocate($pic,200,150,0);
$green1=imagecolorallocate($pic,0,255,0);
$green2=imagecolorallocate($pic,0,200,0);
$blue1=imagecolorallocate($pic,0,0,255);
$blue2=imagecolorallocate($pic,0,0,200);
$gray1=imagecolorallocate($pic,100,100,100);
$gray2=imagecolorallocate($pic,50,50,50);
Az 1-es indexű színek a kördiagram teteje, a 2-es indexűk, mivel sötétebbek, ezért a kördiagram oldalai lesznek. A $white szín, az először létrehozott szín, automatikusan a háttér lesz.
Tegyük ezeket a színeket két külön tömbbe:
$colors1=array($orange1,$green1,$blue1,$gray1);
$colors2=array($orange2,$green2,$blue2,$gray2);
Most dupla for ciklussal készítsük el a kördiagram oldalát!
A megoldás menete: Létrehozunk egyetlen kört, több körcikkből, amelyek torzítva vannak, hogy 3D-s hatást keltsenek, majd ezt a ciklus elvégzi 20-szor, mindig egy pixelt elmozdulva függőleges irányba, így egy „tortát” kapunk.
$kezdo=0;
for($j=20;$j>0;$j--){
for($i=0;$i<count($percent);$i++){
imagefilledarc($kep,400/2,400/2+$j,200,100,$kezdo,$kezdo+360*($percent[$i]/100),$colors2[$i],IMG_ARC_PIE);
$kezdo+=(360*($percent[$i]/100));
}
}
Ezután már csak a diagram tetejét kell megrajzolnunk, a világosabb színekkel:
$kezdo=0;
for($i=0;$i<count($percent);$i++){
imagefilledarc($kep,400/2,400/2+$j,200,100,$kezdo,$kezdo+360*($percent[$i]/100),$colors1[$i],IMG_ARC_PIE);
Ezután, a képet a következő függvénnyel tudjuk megjeleníteni:
imagepng($pic);
A lefoglalt memóriát fel is kell szabadítani:
imagedestroy($pic);
A PHP képkezelés komoly szaktudást igényel, melyet Akkreditált PHP Webprogramozó Mester, valamint Akkreditált Web Artist tanfolyamainkon sajátíthatja el!
Az induló novemberi webprogramozó tanfolyamainkra október 25-ig jelentkezhet!
További, október végén és november elején
induló tanfolyamaink:
- Akkreidtált Webdesigner Mester
- CorelDraw Alap- és Mester
- AutoCad Alap- és Mester
- Adobe Photoshop Alap
- Photoshop Bajnok
- Grafika Mester
Részletekért kattintson ide!
Adja le jelentkezését a választott képzésre legkésőbb
október 25-ig itt,
vagy bármelyik másik elérhetőségünkön!
Várjuk szeretettel!
NetlogiC School Informatika Szakképző Iskola
Gyakorlat orientált informatika oktatás rugalmas időbeosztással!
www.netlogi-c.net