No cosi non funziona e fai confusione sia del php sia dell'html
la funzione require() e' come incude() espande un file ma lo valuta in modo diverso.
quindi come parametro deve prendere una path di un file esistente e di testo dove c'e' del codice.
Non ho capito come pensavi di utilizzarlo comunque non so come faccia ad arrivare al cambio dell'header per me dovrebbe fermasi a questa linea.
L'echo e' una funzione che mette in otuput delle stringhe e non serve per le immagini
non ti da errore perche' quando fai echo func() quello che viene valutato dall'echo e'
il ritorno di func() che nel tuo caso e nullo.
Quindi non ha senso fare
Codice PHP:
echo titolo('helloworld');
ma devi fare semplicemente
Codice PHP:
titolo('helloworld');
perche' l'immagine viene messa in output da
Codice PHP:
imagejpeg($img);//Output dell'immagine.
ora passando a una pagina html il tipo di default e' di tipo text/html se vuoi mettere in output
un immagine nuda e cruda devi cambiare il tipo di header come hai tentato di fare ma va fatto fatto prima di mettere in output qualsiasi cosa e nel tuo caso probabilmente il require ti da problemi.
Inoltre una volta cambiato tipo di documento non puoi piu usare dell'html.
Se ho ben capito quello che tu vuoi fare ossia creare una funzione che crei un immagine con del testo da inserire poi in una pagina html devi fare una cosa diversa.
Questa di seguito funziona se crei una dir tmp dove lavora il file php pero tieni conto
che cosi crea sempre file nuovi e non li cancella mai.
Codice PHP:
<?php
function titolo($testo) {
//Definisco gli array per i font
$tmpsubdir = 'tmp';
$tmpfname = tempnam(getcwd().'/'.$tmpsubdir, 'img_').".jpg";
$altezza = 100; //Definisco l'altezza dell'immagine da creare.
$larghezza = 400; //Definisco la larghezza dell'immagine da creare.
$img = imagecreate($larghezza, $altezza); //Creo l'immagine.
$sfondo = imagecolorallocate ($img, 255, 255, 255); //Definisco lo sfondo.
$black = imagecolorallocate($img, 15, 15, 15);
$txt_color = imagecolorallocate ($img, 34, 126, 191); //Definisco il colore del testo.
imagestring ($img , 16 , 8 , 30 , $testo , $txt_color );
if (imagejpeg( $img , $tmpfname) == FALSE) {
imagedestroy($img) ;
return NULL;
}
else {
imagedestroy($img) ;
return $tmpsubdir.'/'.basename($tmpfname);
}
}
echo "<html>";
echo "<body>";
echo "<img src=\"",titolo("prova titolo"),"\" />";
echo "
ciao";
echo "</body>";
echo "</html>";
?>