Ismerkedés a PHP grafikus programkönyvtárával 1.rész

Írta: | 2011. július 04. | kategóriák: PHP, Speciális, Web

Ebben a részben a PHP GD nevű programkönyvtárát fogjuk használni, amely több tucat függvényt bocsájt rendelkezésünkre a képek készítésére, manipulálására és mindezt futásidőben. Ennek feltétele, hogy a PHP GD-támogatással legyen telepítve. Az alábbi kis kóddal leellenőrizheted azt.

echo phpinfo();

A megjelenő listában keresd meg GD táblázatot. Az ott felsoroltakból kiderül, hogy melyik GD verzió van telepítve, valamint a támogatott képtípusok is.
Legelső sor: GD support enabled. Ez az jelenti, hogy a támogatás megvan. Látható ott még egy pár verziószám, de ami még érdekes az a gif, jpg és png támogatások. Az én verziómban ez mind engedélyezett, de más szervereken előfordulhat, hogy csak png és jpg van. A példáimban png-t fogok használni.

Kép létrehozása

Ismerkedésként egy egyszerű képet fogunk létrehozni, majd rárajzoltatjuk a klasszikus Hello World! szöveget. Mivel a PHP fájlunkat képként kell a böngészőnek kezelnie, ezért meg kell neki mondani, hogy ez bizony egy kép lesz. Méghozzá egy PNG típusú.
Készíts egy új PHP fájlt, majd gépeld be az alábbi kódot, ezzel jelezve a PHP értelmezőnek a  fentebb említetteket.

header('content-type: image/png');

Most létrehozunk egy képet – pontosabban egy képazonosítót fogunk kapni – amit szinte az összes GD függvény igényel. Ilyen azonosítót létrehozhatunk egy létező képből is, de most egy teljesen üres képet készítünk.

Az imagecreate vagy az imagecreatetruecolor függvény kettő darab int típusú paramétert vár; a képünk szélességét, magasságát pixelben értve és az a feladata, hogy elkészítse a képünket. A php.net-en inkább az imagecreatetruecolor-t ajánlják. Ehhez a függvényhez a GD 2.01-es verziója vagy annál újabb szükséges.
Hozzuk létre azt az azonosítót!

$kep_id = imagecreate(100, 70);

Majd beállítunk neki egy háttérszínt. Ehhez az imagecolorallocate függvény kell. Ez a függvény négy paramétert vár. Az első az előzőleg létrehozott $kep_id lesz, a másik három pedig a piros, kék és zöld színek (RGB). Ezek az értékek 0 és 255 közti egész (int) számok lehetnek. A függvény visszatérési típusa egy színazonosító.
Az egyszerűség kedvéért “keverjük ki” a fekete színt. Ennek RGB kódja: 0 0 0. A fekete színt az alábbi kód fogja képviselni.

// fekete
$hatter = imagecolorallocate($kep_id, 0, 0, 0);

Még két sor kód és a képet meg is lehet tekinteni. Az imagepng küldi a képet a kimenetre. Egyetlen paraméterre van szüksége, a képünk azonosítójára. Pontosabban négy paramétert vehet fel, de csak ez az egy kötelező, majd később megnézzük a többit is. Miután a képet kiküldtük a böngészőnek felszabadítjuk a lefoglalt memóriát. Az imagedestroy feladata éppen ez. Az előzőhöz hasonlóan itt is csak az azonosítóra van szükség.

imagepng($kep_id);
imagedestroy($kep_id);

íme az elkészült kép!

A szöveg

Ahhoz, hogy szöveget tudjunk kirajzoltatni, szükségünk lesz magára a szövegre és annak színére. A szín legyen fehér (255, 255, 255), létrehozása az előzőekben megismert módon történik. Az alábbi kódot a fekete szín létrehozása után illeszd be.

$szoveg = "Hello World!";
 
// feher
$betu_szin = imagecolorallocate($kep_id, 255, 255, 255);

A szöveghez az imagestring nevű függvényt fogjuk használni. Ő már hat paramétert vár. Egy képazonosítót, betűméretet, x,y koordinátákat, magát a szöveget valamint, egy színazonosítót.
A betűméret 1-5 tartományban mozoghat. Az x,y – vagy ha jobban tetszik left, top – ugyanúgy működik mint például CSS esetén. Tehát a bal felső sarok a nullapont. Az x a vízszintes az y a függőleges irány. A maradék két paraméter szerintem nem igényel magyarázatot:).

imagestring($kep_id, 3, 10, 25, $szoveg, $betu_szin);

A legelsőként létrehozott szín lesz a kép háttérszíne! Tehát a ha a kódban előbb hozod létre a $betu_szin változót és csak utána a $hatter változót a képed háttér színe fehér lesz fekete helyett!
Ezt a PHP fájlt ugyanúgy használhatod, mintha egy kép lenne:

<img src="2_a_szoveg.php" alt="" />

TrueType szöveg

Egy másik függvény szövegek rajzolására az imagettftext. Az előzőhöz képest kettő plusz paramétert vár, tehát nyolcat. Az első a szokásos képazonosító, majd a betűméret float típusban, vagyis tized pontossággal megadható. GD verziótól függ, hogy pixel(GD1) vagy point(GD2). A harmadik paraméter az elforgatás szöge szintén float típusban. Következő kettő az x,y koordináták, utána egy színazonosító. Az utolsó előtti a használni kívánt font típust kéri, végül maga a szöveg. A használni kívánt font típust a PHP fájlunknak el kell tudnia érni – a szerveren kell lennie -, ellenkező esetben kép helyett csak egy szép hibaüzenet fog megjelenni!
Ezeknél a betűknél a 0,0 koordináta nem a bal felső, hanem a bal alsó sarok! Tehát függőleges irányban a szövegnek az alja a nulla pont – pontosabban a szöveg alapvonala -, felfelé mérve mínusz, lefelé plusz.

$font = "../fonts/verdana.ttf";
 
imagettftext($kep_id, 12, 0, 0, 35, $betu_szin, $font, $szoveg);

Forrásfájlok letöltése

Megjegyzés: a példa állományok csomgban nincsenek fontok szerzői jogok védelmében.

Tipp: az operációs rendszer beépített fontjait bátran használhatod tanulásra, pl. a Verdana is szinte minden modern operációs rendszer részét képezi.



Értékeld a bejegyzést!

Loading ... Loading ...

A bejegyzésre érkező kommenteket elérheted RSS 2.0 formájában vagy emailben is:

A bejegyzéshez tartozó trackback cím, illetve a permalink.

A megjegyzéseket kérlek, tedd fel érthető és illendő módon, ne fikázz le másokat, mert nem tudnak valamit, amit te már igen. A kommentár lehetőleg függjön a bejegyzéshez :)

kötelező
kötelező, titok marad
ha nincs, maradjon üres