[paper] Disegnare con le GD

Only PHP & MySQL.

Moderator: DaD

[paper] Disegnare con le GD

Postby Gaglio on Fri May 09, 2008 11:39 pm

Volevo postare questo tutorial su PHP che ho realizzato qualche tempo fa sulle famose GD dato che ho potuto capire che molti, soprattutto alle prime armi, hanno difficoltà ad usare questa libreria. Il tutorial è scritto da me con l'aiuto del mio amicoo Crash-overflow per gli esempi mani
Buona lettura, aspetto commenti Wink

Disegnare con le GD



Tra le sue sfaccettature il php mette a disposizione una serie di funzioni per la manipolazione delle immagini, questo tramite l'utilizzo delle librerie GD.

le GD sono installate in quasi tutti i server ma se stiamo lavorando in locale abbiamo bisogno di installarle vediamo come :


su windows è abbastanza semplice

nel file php.ini decommentiamo questa riga:

da

;extension=php_gd2.dll
a

extension=php_gd2.dll

per usare le GD2.
per le GD1 questa:

;extension=php_gd.dll

Su linux Debian/Ubuntu basta installare il pacchetto “php5-gd”:

sudo apt-get install php5-gd



Adesso vediamo come utilizzare le GD creando un piccolo script che restituisce un immagine con scritto l'ip,l'host e l'user agent della persona che lo visualizza.

come prima cosa dobbiamo inizializzare l'immagine determinando la grandezza (x,y):


$img = imageCreate(200, 200); // X = 200 Y = 200


Bene, la nostra immagine è stata creata, per comodità le GD2 permettono di allocare i colori espressi in RGB in delle varibili, quindi allochiamo 2 colori il bianco che ci servirà per lo sfondo dell'immagine il il nero che ci servirà per le scritte:


$bianco = imageColorAllocate($img, 255, 255, 255);

$nero = imageColorAllocate($img, 0, 0, 0);


Ora è tutto pronto per la creazione dell'immagine, tramite l'array superglobale $_SERVER riprendiamo ip, host e useragent:


$ip = $_SERVER['REMOTE_ADDR'];

$host = $_SERVER['REMOTE_HOST'];

$info = $_SERVER['HTTP_USER_AGENT'];



Esistono diverse funzioni per disegnare, queste sono le principali:


imageLine($img, $x1, $y1, $x2, $y2, $color) disegna una linea nell'immagine dal punto $x1,$y1 al punto $x2,$y2 di colore $color


imageRectangle($img, $x1, $y1, $x2, $y2, $color) disegna un rettangolo nell'immagine $img partendo da due punti, il vertice superiore sinistro ($x1, $y1) e il vertice inferiore destro ($x2, $y2) del rettangolo con il colore $color. Questa funzione disegnerà solo il bordo del rettangolo lasciandone vuoto il contenuto. Il bordo di questo rettangolo sarà di 1 px.



imageFilledRectangle($img, $x1, $y1, $x2, $y2, $color) funziona in modo analogo alla funzione precedente, solo che disegnerà il riempimento del rettangolo. Se vogliamo quindi queste due funzioni sono complementari.



imageString($img, $font, $x, $y, $text, $color) inserisce all'interno dell'immagine $img il testo $text alle coordinate del punto ($x, $y) utilizzando il font $font e il colore $color. per quanto riguarda i font di default ne sono inclusi 5



imageFill($img, $x, $y, $color) Questo è uno strumento di rempiemento, supponiamo che a $x,$y ci sia un rettangolo questo sarà riempito con $color

Le GD mettono a disposizione anche altre funzioni:


- imageEllipse() disegna un'ellisse
- imageArc() disegna un arco, o un ellisse parziale
- imagePolygon() disegna un poligono indicato dai punti passati come parametro
- imageFilledEllipse() disegna il riempimento di un'ellisse (disponibile solo nelle GD 2.x)
- imageFilledArc() disegna il riempimento di un arco, o ellisse parziale (disponibile solo nelle GD 2.x)
- imageFilledPolygon() disegna il riempimento di un poligono.


Tornando al nostro esempio, per creare un immagine contentente ip,host e useranget ovviamente avreamo bisogno della funzione ImageString() :


imageString($img, 2, 5, 0, "Tuo IP : $ip", $nero);

imageString($img, 2, 5, 50, "Tuo Host : $host", $nero);

imageString($img, 2, 5, 100, "Browser : $info", $nero);

imageString($img, 2, 5, 150, "Gaglio – www.dev-area.org",$nero);


Il nostro script è quasi concluso dobbiamo solo inviare l'header al browser e stampare l'immagine (in questo caso in png ma avremmo anche potuto usare jpg con imageJpg()):


header("Content-type: image/png");

imgePng($img);

imageDestroy($img);


Lo script è concluso potete trovare un esempio QUI


PS: Scusate ma non ho molta confidenza con la formattazione nel phpBB :S per una migliore formattazione vi allego il link dove è ufficialmente postato
http://dev-area.org/jos/index.php?optio ... &Itemid=27

Ciao, Gaglio
Gaglio
Newbies
 
Posts: 3
Joined: Fri May 09, 2008 11:07 pm

[paper] Disegnare con le GD

Sponsor

Sponsor


Postby k8 on Wed May 14, 2008 7:59 pm

uhm bene :D,
se hai tempo aggiusta il topic inserendo il codice tra i tag code e /code
:)
Big-Bug cerca collaboratori.
Scrivete senza abbreviazioni e senza k, grazie.
k8
Admin
 
Posts: 2127
Joined: Tue Jun 06, 2006 4:00 pm


Return to PHP & MySQL

Who is online

Users browsing this forum: No registered users and 1 guest