PHP/Programmazione/Immagini

Wikibooks, manuali e libri di testo liberi.


Copertina PHP/Copertina

Tra le funzionalità del PHP esiste anche quella di creare dinamicamente immagini e restituire un output non quindi di testo (come può essere quello dell'HTML) ma di immagine.

Per fare ciò è possibile usare le librerie GD, delle librerie open-source sviluppate dalla Boutell. È possibile avere maggiori informazioni sull'argomento sul sito ufficiale.

Prima di procedere quindi alla creazione di immagini con PHP, si verifichi ovviamente di avere installato le librerie GD sul proprio computer.

Per creare quindi una nuova immagine in PHP dovremmo quindi:

  1. caricare in memoria una nuova immagina o una copia di un'immagine esistente
  2. caricare (si dice allocare) i colori usati per le eventuali modifiche dell'immagine
  3. eseguire eventuali modifiche (creare linee, punti, riempimenti, aggiungere testo...)
  4. restituire come output un'immagine dopo aver correttamente impostato nell'header il tipo di file restituito

Indice

[modifica] Creare una nuova immagine

Per la creazione di una nuova immagine PHP mette a disposizione diverse funzioni. Per creare un'immagine ex-novo usiamo la funzione:

imagecreatetruecolor(h, w)

che crea in memoria una nuova immagine di altezza h e larghezza w (in pixel) e restituisce un riferimento all'immagine appena creata.

Per caricare in memoria un'immagine salvata su disco usiamo invece le funzioni

imagecreatefrom<tipo> (percorso)

che carica un'immagine salvata sul server del tipo specificato. Ad esempio:

$img = imagecreatefrompng('immagine.png');

Esiste inoltre una funzione

imagecreatefromstring (testo)

che crea un'immagine contenente il testo specificato come argomento

Nei casi avvenga un errore, le funzioni restituiscono false.

[modifica] Lavorare con i colori

Per allocare un colore si usa la funzione

imagecolorallocate(r,g,b)

che restituisce un riferimento al colore date le sue componenti RGB.

È possibile, se si sta lavorando con formati come il PNG (che supporta la trasparenza), allocare colori con una determinata trasparenza, compresa tra 0 (opaco) e 127 (completamente trasparente) con la funzione

imagecolorallocatealpha(r,g,b,trasparenza)

Si noti che il primo colore allocato verrà automaticamente usato come colore di sfondo dell'immagine.

Creata la nuova immagine e allocati i colori, è ora possibile lavorarci sopra in due modi:

  • disegnando nuovi pixel (creando linee, forme, ecc...)
  • lavorando sui pixel già esistenti (serve se l'immagine è stata caricata da un file) tagliandone parti, ricolorandola o ridimensionandola)

[modifica] Disegnare punti, linee e forme

Per disegnare un pixel usiamo la funzione

imagesetpixel(immagine, x, y, colore)

dove immagine è una risorsa di immagine , x e y sono le coordinate del punto da disegnare e colore è una risorsa che identifica un colore allocato in precedenza.

imageline(immagine, x1, y1, x2, y2, colore)

Traccia una linea dal punto x1, y1 al punto x2, y2

imagerectangle(immagine, x1, y1, x2, y2, colore)

Disegna un rettangolo che ha per diagonale la linea da x1, y1 a x2, y2.

imageellipse(immagine, x, y, w, h, colore)

Disegna una ellisse di centro x, y di altezza h e larghezza w. Se h è uguale a w, allora si otterrà un cerchio.

imagearc(immagine, x, y, w, h, ang1, ang2, colore)

Funzione come imageellipse ma disegna solo l'arco di ellise compreso tra gli angoli (in gradi) ang1 e ang2, I gradi sono contati in senso orario a partire dalle ore 3.

[modifica] Lavorare sui pixel già esistenti

Per lavorare su un'immagine già disegnata in precedenza, ad esempio una foto, si hanno a disposizione molte funzioni

Strumenti personali