Disegnare con le GD
Pubblicato il 13/06/2008
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, "Galatolo Federico – 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
Descrizione non disponibile. Questo membro non è più parte della Community.
|
Aggiungi un commento