Utilizzo di cookies
Script GD libray con PHP Modelli Creare immagine Colore e trasparenza Disegnare Pennelli Misurare Filtri Testo Copy Salvare Miscellanea
GD library con PHP
Alpha trasparenza
trasparenza e sovrapposizione di colori con diversa opacità


e-book
cartaceo

Soddisfatto il requisito del tipo di immagine imagecreatetruecolor() ed usando la funzione imagecolorallocatealpha() , è possibile disegnarci  con i gradi di trasparenza che GD permette.
Quando l'immagine viene creata ad es. $Immagine = imagecreatetruecolor(200,200);
viene creata un'immagine di 200x200 pixel (larghezza per altezza)  


Alla creazione, il colore di sfondo e' sempre nero. 
Di solito vengono usate una delle tecniche sotto descritte.
Viene allocato il colore che sarà trasparente
ad es. il Nero,  $CanaleAlpha = imagecolorallocatealpha($Immagine, 0, 0, 0, 127);


Nell'utilizzo è solitamente usata una delle 2 tecniche: 
Coprire l'immagine con rettangolo di colore trasparente utilizzando la funzione imageFilledRectangle($Immagine, 0,0,200,200, $CanaleAlpha)
oppure 
Rende l'immagine completamente trasparente con 
imagefill($Immagine, 0, 0, $CanaleAlpha);


Impostare il flag per salvare informazioni con canale Alpha
imagesavealpha($Immagine, true);


Il seguente esempio crea un'immagine trasparente, su questa, utilizzando il canale Alpha vengono disegnate alcune figure semitrasparenti.


<?php
// crea immagine di 400x400 pixel, per default lo sfondo è nero
$Immagine=imagecreatetruecolor(400, 400);


/*** rende l'immagine TRASPARENTE ***/
imagesavealpha($Immagine, true); // imposta il flag per salvare informazioni con canale Alpha
$CanaleAlpha = imagecolorallocatealpha($Immagine, 255, 255, 0, 127);
imagefill($Immagine, 0, 0, $CanaleAlpha); // rende l'immagine completamente trasparente


// VALORI PER DISEGNARE LE IMMAGINI SU FONDO TRASPARENTE
//centro delle circonferenze
$VerdeX = 100; $VerdeY = 100; $CelesteX = 300; $CelesteY = 100;
$BluX = 100; $BluY = 300; $GialloX = 300;$GialloY = 300;
$diametro = 150;


// colore del quadrato
$RossoOpaco = imagecolorallocatealpha($Immagine, 255, 0, 0, 0);


// alloca i colori con valori ALPHA
$VerdeALPHA = imagecolorallocatealpha($Immagine, 0, 255, 0, 80);
$CelesteALPHA = imagecolorallocatealpha($Immagine, 0, 255, 255, 80);
$GialloALPHA  = imagecolorallocatealpha($Immagine, 255, 255, 0, 80);
$BluALPHA  = imagecolorallocatealpha($Immagine, 0, 0, 255, 80);


// disegna un quadrato rosso
imagefilledrectangle($Immagine, 100,100,300,300, $RossoOpaco);


// disegna 4 circonferenze sovrapposte al quadrato
imagefilledellipse($Immagine, $VerdeX, $VerdeY, $diametro, $diametro, $VerdeALPHA);
imagefilledellipse($Immagine, $CelesteX, $CelesteY, $diametro, $diametro, $CelesteALPHA);
imagefilledellipse($Immagine, $GialloX, $GialloY, $diametro, $diametro, $GialloALPHA);
imagefilledellipse($Immagine, $BluX, $BluY, $diametro, $diametro, $BluALPHA);


header('Content-Type: image/png');
imagepng($Immagine); // al browser
imagepng($Immagine, "NomeFile.png"); // salva
imagedestroy($Immagine); // libera memoria
?>
  Risultato: