Cosa sono?
-Se ne parla tanto, ma molti non sanno che cosa sono. Le librerie GD del linguaggio PHP sono molto utili in quanto permettono al programmatore di creare vere e proprie immagini nei formati JPG/JPEG, PNG, BMP e GIF personalizzate dal colore di sfondo al testo.
Infatti il particolar uso che io ne faccio è quello di rendere visibili caratteri rari che molti computer non possiedono.
Iniziamo con un esempio!
-Secondo me, per cominciare bene la programmazione "casalinga", è più conveniente procedere per esempi.
Procediamo ad esempio nel creare una immagine formato PNG che contenga un piccolo rettangolo colorato a vostro piacimento. Niente di più facile per cominciare bene!
Codice PHP:
<?php
$im = imagecreatetruecolor(200,200); //Creiamo l'immagine 200*200
$bg = imagecolorallocate($im,255,255,255); //Diamo il colore per lo sfondo(BIANCO)
$rec = imagecolorallocate($im,0,255,255); //Diamo un colore azzurrino per il rettangolo
$col = imagecolorallocate($im,0,0,0);//Il colore del testo(NERO)
$bg2 = imagecolorallocate($im,255,0,0);//Il colore dello sfondo del rettangolo
imagefill($im,0,0,$bg); //Applichiamo il colore allo sfondo
imagerectangle($im,10,10,190,190,$rec); //Disegnamo il rettangolo
imagefill($im,11,11,$bg2);//Lo sfondo del rettangolo
imagestring($im,2,20,20,"Salve gente!",$col);//Scriviamo Salve gente! nel rettangolo
//Adesso arriva il punto dove si va a creare la vera e propria immagine
imagepng($im,"immagine.png"); //Abbiamo creato un'immagine PNG chiamata immagine.png, ma questo procedimento si poteva evitare scrivendo in cima alla pagina header("Content-Type: image/jpeg");
echo "<img src=\"immagine.png\">"; //Facciamo comparire l'immagine tramite il tag HTML <img>; se utilizzate l'header questo va omesso!
imagedestroy($im); //Finiamo con il distruggere l'immagine temporanea
?>
Finito questo procedimento dovremmo ritrovarci con ciò:
Analizziamo le funzioni:
imagecreatetruecolor contiene la larghezza*l'altezza della nuova immagine creata da zero;
imagecolorallocate serve a prendere un colore, e ha ($vardellimmagine,[intensità di rosso],[intensità di verde],[intensità di blu]);
imagefill applica colore da cordinata x e da cordinata y ($varimmagine,x,y,$colore);
imagerectangle disegna un rettangolo definendo l'immagine,la coordinata x e quella y da cui iniziare e la coordinata x e y nelle quali finire il rettangolo e come ultimo elemento il colore del bordo;
imagestring serve a scrivere una stringa.
Voi penserete: "Si beh, è una semplicissima immagine con una scritta dentro..", ma pensate se la sfruttate con un DATABASE!
Se non lo avete, non disperate, fate come me: usate i File Di Testo!
Note: una variante migliore a imagestring, che scrive un testo da voi prefissato o dinamico, è imagettftext, che scrive un testo con un VOSTRO font, che potrebbe essere molto bello, abbinato ad altre cose!
imagettftext(variabile della immagine, grandezza del font, angolo, posizione x, posizione y, colore, file font .ttf, testo);
imageline e imagecreatefrom*
-Altri codici della libreria GD sono imageline e imagettftext (controlla il manuale) .
Vediamoli in dettaglio: imageline serve a disegnare una linea da x y coordinate a x y coordinate. La funzione si scrive così:
Codice PHP:
<?
//Il codice di prima va qui, se poi volete inserire una linea fate così
imageline($im,20,20,30,20,$colore);//Traccia una linea diritta che va a sottolineare Salve gente!
?>
Penso che questa funzione sia facilissima se avete compreso la parte precedente.
La funzione qui sotto, rispetto alla prima utilizzata (imagecreatetruecolor), è ristretta al tipo di immagine, recuperabile tramite imagetypes.
Questa funzione, che si chiama imagecreatefrom*, può avere come "desinenze" i vari tipi di immagine: wbmp per il BMP, png per il PNG, jpeg per JPG/JPEG e gif per le GIF.
Questa funzione può tornare utile per scrivere sopra immagini già create come fotografie, disegni eccetera. Ma può servire anche a creare le cosiddette thumbnails, ovvero quelle piccole immagini d'anteprima che portano alla loro immagine madre.
Vedremo prima come fare a scrivere su immagini già create, poi a rimpicciolirle.
Codice PHP:
<?php
$font = "arial.ttf";//Font
$ima = imagecreatefromjpeg("immagine1.jpg");//prendo l'immagine
$textcol = imagecolorallocate($ima,0,0,0);//Prendo il colore nero per il testo
list($larg, $altez, $uno, $due) = getimagesize("immagine1.jpg"); //Metto nelle variabili $larg e $altez la larghezza e l'altezza dell'immagine con l'array getimagesize()
imagettftext($ima,15,0,$larg-30,$altez-50,$textcol,$font, "Salve Gente!");
imagepng($ima,"nuova.png");//trasformo, per comodità mia, l'immagine in nuova.png e la scrivo
echo "<img src=\"nuova.png\">";
imagedestroy($ima);
?>
Il risultato è questo:
Ora vedremo come rimpicciolire un'immagine.
Per questo ne sceglierò una più grande, e vi riscriverò tutto il codice, la funzione chiave sarà imagecopyresized che copia una immagine ridimensionata secondo nuove dimensioni.
Codice:
Codice PHP:
<?php
list($vlarg, $valt) = getimagesize("immagine2.jpg");//prendo le misure vecchie
$imag = imagecreatetruecolor($vlarg*0.5,$valt*0.5); //creiamo la "base";
$src = imagecreatefromjpeg("immagine2.jpg");//prendiamo l'immagine originale
imagecopyresized($imag,$src,0,0,0,0,$vlarg*0.5,$valt*0.5,$vlarg,$valt);//e l'immagine è ridimensionata, ora non resta che crearla
imagepng($imag,"ridim.png");
echo "<img src=\"ridim.png\">";
imagedestroy($imag);
?>
Ed ecco il risultato:
GD e Forum: ne avrete sentito parlare?
-Volendo utilizzare queste immagini in script di scambio di messaggi, come ad esempio i forum, per integrare una di queste immagini nella vostra firma oppure nel messaggio vero e proprio, non dovete sapere molto di più di quello che già avete imparato: vi basti sapere che le immagini possono avere anche l'estensione .php.
Questo diventa possibile aggiungiendo in cima alla pagina questo codice:
Codice PHP:
<?php
header("Content-Type: image/jpeg");
?>
Il quale fa capire che la pagina è in verità una immagine (più o meno il concetto è questo, se volete una spiegazione dettagliata non vi resta che andare su http://freephp.html.it o visitare forum come questo ).
Mettiamo che voi volete fare una firma, nella quale è presente una rotazione di immagini. Niente di più semplice, utilizzando gli array e le GD!
Codice PHP:
<?php
header("Content-Type: image/jpeg");
$arra[0] = "immagine.jpg";
$arra[1] = "immagine2.jpg";
$arra[2] = "immagine3.jpg";//Definisco l'array $arra[], contenente il nome o il percorso dell'immagine
$rand = rand(0,2); //La variabile $rand conterrà a caso i numeri da 0 a 2;
$img = imagecreatefromjpeg("$arra[$rand]");//La funzione prende uno dei contenuti dell'array
$color = imagecolorallocate($img,255,255,255);//BIANCO
imagettftext($img,15,0,0,20,$color,"arial.ttf","Salve gente!");//Scrivo sull'immagine
imagejpeg($img);
imagedestroy($img);
?>
Ora per farla vedere bastera inserirla nei tag in questo modo, oppure in :
Codice:
[img-]http://sitotuo.it/esempio4.php[-/img] <---Senza "-"
<img src="http://sitotuo.it/esempio4.php">
Ed ecco fatto! Aggiornando verranno fuori 3 diverse immagini.
Nota: se volete scrivere una stringa che però non conoscete (estratta da un db) potete usare la funzione strlen per calcolarne la lunghezza e, in base ad essa, fare le necessarie somme per la coordinata x.
Fine! Adesso avete sicuramente capito come utilizzare le GD!
Spero che i Moderatori non cancellino questa guida o la ritengano superflua: io penso che essa possa aiutare un principiante(issimo) nella questione
Se trovaste questa guida in un sito che non nomino per non fare spam(perchè il sito è mio, hostato su AV si intende ) non vi preoccupate! L'autore sono io!
E con questo ho finito!(LA MIA PRIMA GUIDA! )