PHP/Programmazione/Immagini: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
modifica minore
Pietrodn (discussione | contributi)
m sostituisco entities, typo
Riga 2:
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 [http://www.libgd.org/Main_Page sito ufficiale].
 
Prima di procedere quindi alla creazione di immagini con PHP, si verifichi ovviamente di avere installato le librerie GD sul proprio computer.
Riga 34:
che restituisce un riferimento al colore date le sue componenti [[w:RGB|RGB]].
 
&Egrave;È possibile, se si sta lavorando con formati come il PNG (che supporta la trasparenza), allocare colori trasparenti con la funzione <code>imagecolortransparent</code>
<source lang=php>imagecolortransparent(immagine,colore)</source>
dove <code>colore</code> &egrave;è una risorsa colore valida creata con <code>imagecolorallocate</code>; &egrave;è anche possibile allocare colori con una determinata trasparenza, compresa tra 0 (opaco) e 127 (completamente trasparente) con la funzione
<source lang=php>imagecolorallocatealpha(immagine,r,g,b,trasparenza)</source>
Si noti che il primo colore allocato verrà automaticamente usato come colore di sfondo dell'immagine.
Riga 55:
Disegna una ellisse di centro x, y di altezza h e larghezza w. Se h è uguale a w, allora si otterrà un cerchio.
<source lang=php>imagearc(immagine, x, y, w, h, ang1, ang2, colore)</source>
Funzione come <code>imageellipse</code> ma disegna solo l'arco di elliseellisse compreso tra gli angoli (in gradi) ang1 e ang2, I gradi sono contati in senso orario a partire dalle ore 3.
 
== Lavorare sui pixel già esistenti ==
Per lavorare su un'immagine già disegnata in precedenza, ad esempio una foto, si hanno a disposizione molte funzioni.
 
Una delle pi&ugrave;più utilizzate &egrave;è sicuramente <code>imagecopyresized</code>, che permette di copiare una porzione rettangolare di un'immagine ed incollarla in un'altra (con possibilit&agrave;possibilità di ridimensionarla durante il processo). Es:
 
<source lang=php>imagecopyresized(dst_image, src_image, dst_x, dst_y, src_x,
src_y, dst_w, dst_h, src_w, src_h);</source>
dove:
*<code>dst_image</code> &egrave;è l'immagine dove verr&agrave;verrà incollata
*<code>dst_x, dst_y</code> sono le coordinate X e Y di <code>dst_image</code> dove verr&agrave;verrà incollata la porzione di immagine;
*<code>src_x, src_y</code> sono le coordinate X e Y di <code>src_image</code> che corrispondono all'angolo in alto a sinistra del rettangolo da copiare;
*<code>dst_w, dst_h, src_w, src_h</code> sono invece rispettivamente larghezza e altezza dell'immagine rettangolare che sarà incollata e larghezza e altezza dell'immagine rettangolare da copiare.
 
Si pu&ograve;può quindi capire che se dst_w &egrave;è uguale a src_w e dst_h &egrave;è uguale a src_h, la porzione rettangolare dell'immagine rester&agrave;resterà della stessa misura, in caso contrario l'immagine risulterà allungata e/o allargata.
 
La funzione <code>imagecopyresampled</code> riceve gli stessi parametri di <code>imagecopyresized</code>, con la differenza che, in caso di ridimensionamento, la qualit&agrave;qualità &egrave;è migliore.
 
Esiste poi la funzione <code>imagefilter</code>, che permette numerosi effetti quali la scala di grigio, l'incassato, la ricolorazione: per la sua complessità, rimando al [http://it.php.net/manual/it/function.imagefilter.php manuale ufficiale], dove è possibile trovare funzionamento ed esempi.
[[Categoria:PHP|Lavorare con le immagini]], dove &egrave; possibile trovare funzionamento ed esempi.
 
==Stampare l'output==
Prima di stampare l'output del risultato ottenuto &egrave;è necessario indicare, usando la funzione <code>header</code>, il content-type (tipo del contenuto, che per default &egrave;è impostato a text/html); quindi:
<source lang=php>header("Content-type: image/<tipo>");</source>
dove <code>tipo</code> sta per "png", "jpeg" o "gif" a seconda del formato in cui si vuole visualizzare l'immagine.
 
Per visualizarevisualizzare l'immagine, secondo il tipo scelto in precedenza, usare la funzione <code>imagepng</code>, <code>imagejpeg</code> o <code>imagegif</code>, che prendono come parametro la risorsa immagine da visualizzare.
 
Infine occorre liberare la memoria, che &egrave;è stata occupata dall'immagine, con la funzione <code>imagedestroy</code>, che prende come unico parametro la risorsa immagine da distruggere.
 
Sebbene l'omissione di questa procedura non provochi la visualizzazione di errori da parte di PHP, &egrave;è fortemente consigliata soprattutto quando si usano immagini piuttosto grandi.
 
[[Categoria:PHP|Immagini]]
 
{{Avanzamento|75%|4 marzo 2009}}