Guida all’uso delle le librerie grafiche GD con PHP!

In questo breve articolo proverò a spiegarvi come sovrapporre ad un’immagine (in questo caso una pizza) altre immagini (gli ingredienti) creando un’unica immagine.
Ricordo che per utilizzare le librerie grafiche è necessario abilitarle nel file php.ini, come descritto quì.
Le immagini che ho usato nel tutorial sono reperibili quì.
Anteprima funzionante quì.
Il codice “cucina” la pizza basandosi sulle variabili contenute nell’url ($_GET['variabile']).
Per far funzionare il codice, bisogna quindi creare un’url simile ad http://localhost/pizza.php?pomodoro=si&mozzarella=si&basilico=si
Per prima cosa, apriamo i tags php, che ci permettono di inserire codice php all’interno della pagina.
<?
Carichiamo un’immagine di sfondo (la pasta per la pizza) [sfondo.png]
$immagine=imagecreatefrompng('sfondo.png');
Come si usa? imagecreatefrompng (‘immagine’)
Carichiamo tutte le immagini da sovrapporre (ingredienti) usando lo stesso comando di prima ( imagecreatefrompng() )
$pomodori=imagecreatefrompng('pomodori.png');
$carciofini=imagecreatefrompng('carciofini.png');
$pcrudo=imagecreatefrompng('pcrudo.png');
$pomodoro=imagecreatefrompng('pomodoro.png');
$mozzarella=imagecreatefrompng('mozzarella.png');
$basilico=imagecreatefrompng('basilico.png');
Ora cominciamo a creare una raccolta di colori
Ricordo che il primo colore definito sarà quello di sfondo dell’immagine.
$bianco = imagecolorallocate($immagine, 255, 255, 255);
Come si usa? imagecolorallocate ( variabile_immagine, rosso, verde, blu )
$verde = imagecolorallocate($immagine, 0, 255, 0);
$nero = imagecolorallocate($immagine, 0, 0, 0);
$blu = imagecolorallocate($immagine, 0, 0, 255);
Questo è un comando utile per scrivere qualcosa sopra all’immagine
imagestring($immagine,5,3,3,"Viva la pizza!", $blu);
Come si usa? imagestring ( variabile_immagine, dimensione_testo, larghezza, altezza,testo,colore )
Bisogna far capire al browser che l’output sarà un’immagine e non una pagina web, per fare questo usiamo il comando:
header("Content-type: image/png");
Con questo comando disegnamo l’immagine
imagepng($immagine);
Con questo comando liberiamo la cache
imagedestroy($immagine);
Non ci resta che chiudere i tags, e giocare a fare i pizzaioli.
?>
Cosa può andarvi storto?
Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\pizza\immagine.php:2) in C:\AppServ\www\pizza\immagine.php on line 33
L’errore è generato da una specie di conflitto fra testo ed immagine, ovvero, come output è stato generato un “mix” di immagini e stringhe, l’errore può essere causato anche da uno spazio fuori dai tags php.
Parse error: parse error, unexpected T_VARIABLE in C:\AppServ\www\pizza\immagine.php on line 21
Avete dimenticato di comunicare la fine di un’istruzione con un “;”
Parse error: parse error, unexpected ‘}’ in C:\AppServ\www\pizza\immagine.php on line 27
Avete dimenticato di comunicare la fine di un’istruzione prima di una parentesi con un “;”
isaacisback ha detto,
Venerdì 21 Novembre 2008 a 9:36 pm
è possibile sovrapporre un’immagine ad un’altra e posizionarla in un punto preciso?
Grazie
isaacisback
SpaceDB ha detto,
Lunedì 29 Giugno 2009 a 11:22 am
è possibile avere l’esempio completo in uno ZIP?