Fondamenti di programmazione

Corso php a cura del prof. Pietro De Paolis

Il disegno in PHP

E' possibile utilizzare dei comandi per fare dei semplici disegni. Per prima cosa occorre controllare che siano presenti le librerie GD; nella nostra versione del PHP esse sono presenti; infatti nella cartella ../php/extensions sono presenti i due file php_gd.dll e php_gd2.dll; nel caso i programmi di grafica che ora faremo non dovessero funzionare dovremo attivarle configurando opportunamente il file php.ini che abbiamo salvato nella cartella c:\windows. Il file che abbiamo dato noi contiene già i comandi giusti, altrimenti occorre fare ad esso due modifiche:

1 - cercare nel file: ;extension=php_gd.dll oppure: ;extension=php_gd2.dll e togliere il punto e virgola iniziale che equivale ad un commento e quindi non viene eseguita. 

2 - indicare il percorso esatto di dove si trovano le estensioni cercando: extension_dir e specificando la cartella esatta, che nel nostro caso sarà: extension_dir = c:\php\php\extensions

Preparazione del foglio da disegno

Istruzione: imagecreate

E' una istruzione che crea un foglio da disegno bianco su cui disegnare successivamente.

Istruzione: imagecreatetruecolor

Prepara un foglio da disegno di colore nero su cui disegnare.

Se scrivo:

<?php

$immagine= imagecreatetruecolor (200,100);

?>

mi creo un foglio di disegno che in orizzontale, cioè asse x, è lungo 200 pixel, cioè 200 punti luminosi elementari che costituiscono il disegno; mentre in verticale, cioè il secondo numero, asse y, è di 100 pixel; i pixel si contano partendo dal punto superiore sinistro dello schermo, che ha x=0 ed y=0; inoltre l'asse x in orizzontale è orientato verso destra; mentre l'asse y verticale è orientato verso il basso. 

Questo foglio da disegno viene disegnato nella memoria del server e non è quindi visibile all'utente; infatti, se lo eseguiamo non vedremo niente; per poterlo vedere occorre utilizzare la istruzione: header.

La istruzione: header è un pò delicata, in quanto essa deve essere la prima istruzione ad apparire nella pagina; non vi devono essere nemmeno spazi vuoti o altre scritte prima del suo uso, altrimenti non si vede niente. Non possiamo nemmeno usare il tag iniziale <html>, altrimenti non funziona. Modifichiamo, ora il nostro programma nel seguente:

<?php

$immagine= imagecreatetruecolor (200,100);

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

?>

La istruzione header indica che il disegno sarà in formato png; possiamo anche utilizzare altri formati tipo gif:

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

Ma esso non funziona con le librerie  php_gd2.dll ma con le librerie php_gd.dll

Oppure il formato jpeg:

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

che funziona con entrambe le librerie.

Infine ci serve una istruzione image che ci mostri quale è il disegno che noi abbiamo creato in memoria; per esempio:

imagepng ($immagine);

ci mostra sullo schermo un disegno in formato png che si trova in memoria nella variabile $immagine; invece:

imagejpeg ($immagine);

ci mostra sullo schermo un disegno in formato jpeg che si trova in memoria nella variabile $immagine; infine:

imagegif ($immagine);

ci mostra sullo schermo un disegno in formato gif che si trova in memoria nella variabile $immagine.

Scriviamo, quindi, il programma:

<?php

$immagine= imagecreatetruecolor (200,100);

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

imagepng ($immagine);

?>

Salviamolo con nome di: disegno1.php ed eseguiamolo; otteniamo:

cioè il foglio nero da disegno è pronto, anche se è vuoto.

I colori

Per i colori si usa lo standard RGB, cioè i tre colori rosso, verde, blu. Mediante le combinazioni dei tre colori fondamentali si ottengono tutti i 16 milioni di colori, cioè 16.581.375

La funzione da utilizzare  è: imagecolorallocate.

Scriviamo:

$colore = imagecolorallocate ($immagine, 255, 255, 255);

I valori da dare per ciascuno dei tre colori variano da 0 fino a 255; avendo messo:

Rosso=255; Verde= 255; blu = 255; otterremo il colore bianco.

Se scriviamo:

$colore2 = imagecolorallocate ($immagine, 0, 0, 0);

otteniamo il nero.

Se scriviamo:

$colore3 = imagecolorallocate ($immagine, 255, 0, 0);

otteniamo il rosso.

Se scriviamo:

$colore4 = imagecolorallocate ($immagine, 0, 0, 255);

otteniamo il blu, e così via. I colori vengono salvati nelle rispettive variabili da noi scelte a piacere e li useremo quando ci servono.

Disegnare una linea

Vediamo ora altre funzioni; per tirare una linea usiamo: imageline.

Se scrivo:

imageline ($immagine, 10, 20, 100, 50, $colore);

mi salva nella variabile $immagine, che si trova in memoria, una linea che parte da due punti; i punti vanno messi nell'ordine con la rispettiva x ed y; nel nostro caso:

x1 = 10;

y1 = 20;

x2 = 100;

y2 = 50;

Scriviamo l'intero listato:

<?php

$immagine = imagecreatetruecolor (200,100);

$colore = imagecolorallocate ($immagine, 255, 0, 0);

imageline ($immagine, 10, 20, 100, 50, $colore);

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

imagepng ($immagine);

?>

Salviamolo come disegno2.php ed otteniamo:

cioè una linea rossa.

Liberare spazio in memoria

La creazione di immagini occupa dello spazio in memoria che è opportuno liberare usando: imagedestroy.

Se scriviamo:

imagedestroy ($immagine);

libero lo spazio di memoria occupato dalla variabile $immagine; questo lo facciamo alla fine del disegno quando non ci serve più.

Disegnare un rettangolo

Usiamo la istruzione imagerectangle.

Se scriviamo:

imagerectangle ($immagine, 20,20, 180, 80, $colore); 

mi disegna un rettangolo in base alla coordinate di due vertici, quello superiore sinistro con x1=20 ed y1 = 20 e quello inferiore destro con x2=180 ed y2 = 80.

Il listato per il rettangolo sarà:

<?php

$immagine = imagecreatetruecolor (200,100);

$colore = imagecolorallocate ($immagine, 255, 0, 0);

imagerectangle ($immagine, 20,20, 180, 80, $colore);

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

imagepng ($immagine);

imagedestroy ($immagine);

?>

 

Salviamolo come disegno3.php ed eseguiamolo.

Notiamo che il rettangolo è vuoto, cioè ha disegnato solo il perimetro, cioè la parte esterna. Se vogliamo riempirlo tutto di colore dobbiamo aggiungere filled, cioè:

imagefilledrectangle ($immagine, 20,20, 180, 80, $colore);

Salviamolo come disegno4.php ed eseguiamolo. Otteniamo:

un rettangolo rosso sul foglio nero iniziale.

Scrivere un testo

Per scrivere un testo usiamo la funzione imagestring, che scrive un testo in orizzontale.

Se scriviamo:

imagestring ($immagine, 4, 60, 82, "RETTANGOLO", $colore);

Otteniamo:

Notiamo che il primo numero cioè 4 indica la dimensione del carattere che va da 1, carattere molto piccolo a 5, carattere molto grande. Gli altri due numeri rappresentano nell'ordine le coordinate iniziali in cui scrivere il testo; nel nostro caso x1=60 ed y1 = 82.

Infine il testo da scrivere tra virgolette oppure una variabile che contiene del testo.

Il listato è:

<?php

$immagine = imagecreatetruecolor (200,100);

$colore = imagecolorallocate ($immagine, 255, 0, 0);

$colore2 = imagecolorallocate ($immagine, 255, 255, 255);

imagefilledrectangle ($immagine, 20,20, 180, 80, $colore);

imagestring ($immagine, 4, 60, 82, "RETTANGOLO", $colore2);

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

imagepng ($immagine);

imagedestroy ($immagine);

?>

Salviamolo come disegno5.php ed eseguiamolo.

Vi sono molte altre istruzioni grafiche; esse sono reperibili alla pagina:

http://it.php.net/manual/it/ref.image.php

Tutte le istruzioni php si trovano alla pagina: http://it.php.net/quickref.php

Ricordiamo ora, per curiosità, un disegno del cerchio con imagearc che disegna un cerchio vuoto, cioè la circonferenza; mentre imagefilledarc disegna un cerchio pieno.

Se scriviamo:

imagearc ($immagine, 100, 50, 60, 60, 0, 360, $colore3);

disegna un arco, cioè una parte della circonferenza; se la vogliamo tutta mettiamo i gradi da 0° fino a 360°. In particolare i primi due numeri indicano le coordinate del centro; nel nostro caso: x1=100 ed y1 = 50; la seconda coppia di numeri indica la larghezza in orizzontale e in verticale; nel nostro caso abbiamo scelto: larghezza = 60 ed altezza = 60; infine la coppia dei gradi cioè 0 e 360.

Il listato sarà:

<?php

$immagine = imagecreatetruecolor (200,100);

$colore = imagecolorallocate ($immagine, 255, 0, 0);

$colore2 = imagecolorallocate ($immagine, 255, 255, 255);

$colore3 = imagecolorallocate ($immagine, 0,0, 255);

imagefilledrectangle ($immagine, 20,20, 180, 80, $colore);

imagearc ($immagine, 100, 50, 60, 60, 0, 360, $colore3);

imagestring ($immagine, 4, 0, 83, "Rettangolo e circonferenza", $colore2);

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

imagepng ($immagine);

imagedestroy ($immagine);

?>

Salviamolo come disegno6.php ed eseguiamolo ottenendo:

Se scriviamo:

imagefilledarc ($immagine, 100, 50, 60, 60, 0, 360, $colore3, IMG_ARC_PIE);

disegna un settore, cioè una parte del cerchio; se lo vogliamo tutto mettiamo i gradi da 0° fino a 360°. In particolare i primi due numeri indicano le coordinate del centro; nel nostro caso: x1=100 ed y1 = 50; la seconda coppia di numeri indica la larghezza in orizzontale e in verticale; nel nostro caso abbiamo scelto: larghezza = 60 ed altezza = 60; infine la coppia dei gradi cioè 0 e 360.

L'ultimo argomento della funzione può essere:

1- IMF_ARC_PIE per disegnare un cerchio o semicerchio pieno.

2- IMF_ARC_CHORD per disegnare un semicerchio pieno con la corda che unisce i due raggi (settore circolare).

3- IMF_ARC_NOFILL | IMF_ARC_EDGED per disegnare un semicerchio vuoto, con i due raggi ai bordi.

Vediamo il listato seguente:

<?php

$immagine = imagecreatetruecolor (500,200);

$colore = imagecolorallocate ($immagine, 255, 0, 0);

$colore2 = imagecolorallocate ($immagine, 255, 255, 255);

$colore3 = imagecolorallocate ($immagine, 0,0, 255);

imagefilledarc ($immagine, 100, 100, 100, 100, 0, 270, $colore3,IMG_ARC_PIE);

imagefilledarc ($immagine, 200, 100, 100, 100, 0, 270, $colore3,IMG_ARC_CHORD);

imagefilledarc ($immagine, 350, 100, 100, 100, 0, 270, $colore3,IMG_ARC_NOFILL|IMG_ARC_EDGED);

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

imagepng ($immagine);

imagedestroy ($immagine);

?>

Salviamolo come disegno7.php ed eseguiamolo ottenendo:

 

 

Corso di programmazione in PHP

Dizionario php

 

prof. Pietro De Paolis

Indice Scuola Elettrica - generico


Scuola Elettrica



 

Altre applicazioni


Mappa per tipo di scuola

 

Indice di tutte le pagine del sito


Guida per navigare


Richiesta informazioni


Scuola Elettrica