Il carattere usato è arial.ttf che si trova nella sotto cartella font.
Tradizionalmente sono 7 i colori dell'arcobaleno, i computer non possono mostrarli con precisione, ma solo approssimare.
Viene caricata un'immagine di colore uniforme e resa trasparente per diventare lo sfondo del testo che verrà scritto.
Sull'immagine viene scritta più volte, in vari colori e inclinazioni, la parola arcobaleno seguita dai gradi di inclinazione per i quali è tracciata.
<?php
Esempio di fusione fra immagini con sfondi (Grata.png e Tigre.png) trasparenti preservando le trasparenze.
Notare che con
imagecopyresampled (),
la grata viene ridimensionata per adattarsi perfettamente all'immagine con la tigre.
// carica l'immagine
$Immagine =
imagecreatefrompng("NomeFile.png");
// dimensioni dell'immagine
$Larghezza =
imagesx($Immagine); $Altezza =
imagesy($Immagine);
// legge punto x,y dell'immagine
$ColoreTrasparenza =
imagecolorat($Immagine, 0, 0);
// rende trasparente il colore letto nel punto x,y
imagecolortransparent($Immagine, $ColoreTrasparenza);
$FontNome = "font/arial.ttf"; // posizione e nome nome font
$FontDim = 30; // dimensione font
$Colore[0] =
imagecolorallocate($Immagine, 255,0,0); // Rosso
$Colore[1] =
imagecolorallocate($Immagine, 255,127,0); // Arancio
$Colore[2] =
imagecolorallocate($Immagine, 255,255,0); // Giallo
$Colore[3] =
imagecolorallocate($Immagine, 0,255,0); // Verde
$Colore[4] =
imagecolorallocate($Immagine, 0,0,255); // Blu
$Colore[5] =
imagecolorallocate($Immagine, 75,0,130); // Indaco
$Colore[6] =
imagecolorallocate($Immagine, 139,0,255); // Viola
$x=0; $C=0; $count = 18; // valori di default per calcolo gradi
while($x<$count){
$x=$x+1; $Testo=" arcobaleno ".(20*$x)."°"; // crea la stringa da disegnare
// disegna la stringa
imagettftext($Immagine, $FontDim, 20*$x, $Larghezza/2,$Altezza/2, $Colore[$C], $FontNome, $Testo);
$C++; if($C>6){$C =0;} // colore nel quale viene scritta la prossima stringa
}
header("Content-type: image/png");
imagepng($Immagine,"NomeFile_arcobaleno.png"); // salva
imagepng($Immagine); // al browser
imagedestroy($Immagine); // libera memoria
?>
Risultato: