Newsgroup: it.comp.www.php
Titolo: funzione per visualizzare testi con font custom

Salve a tutti,
ho scritto (non tutta io, devo ammettere) questa funzione che segue, per 
ottenere testo sotto forma di immagine con il font che piu mi piace.
Il problema è che se richiamo la funzione da sola e faccio un echo 
dell'output, funziona tranquillamente.
Se invece includo la funzione in un altro script o pagina php, ottengo 
sempre:
Cannot modify header...header already sent...bla bla  e poi una caterva 
di caratteri strani.
La funzione è la seguente:
<?php
function ttftext($text,$font,$size)
{
$bbox = imagettfbbox($size, 0, $font, $text);
$width = abs($bbox[2] - $bbox[0]);
$height = abs($bbox[7] - $bbox[1]);
$image = imagecreatetruecolor($width, $height);
$bgcolor = imagecolorallocate($image, 255, 255, 255);
$color = imagecolorallocate($image, 255, 0, 0);
$x = $bbox[0] + ($width / 2) - ($bbox[4] / 2);
$y = $bbox[1] + ($height / 2) - ($bbox[5] / 2);
imagefilledrectangle($image, 0, 0, $width - 1, $height - 1, $bgcolor);
imagettftext($image, $size, 0, $x, $y, $color, $font, $text);
$last_pixel= imagecolorat($image, 0, 0);
for ($j = 0; $j < $height; $j++)
{
     for ($i = 0; $i < $width; $i++)
     {
         if (isset($blank_left) && $i >= $blank_left)
         {
             break;
         }
         if (imagecolorat($image, $i, $j) !== $last_pixel)
         {
             if (!isset($blank_top))
             {
                 $blank_top = $j;
             }
             $blank_left = $i;
             break;
         }
         $last_pixel = imagecolorat($image, $i, $j);
     }
}
$x -= $blank_left;
$y -= $blank_top;
imagefilledrectangle($image, 0, 0, $width - 1, $height - 1, $bgcolor);
$testo = imagettftext($image, $size, 0, $x, $y, $color, $font, $text);
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
return $testo;
}
?>
Come potrei renderla utilizzabile ovunque?
Suggerimenti?
Grazie mille
Franz

 di caratteri strani.
Lo script che richiama/include la funzione ha dell'output, prima di
lanciare la funzione? (basta anche un solo spazio bianco)
Se vuoi un consiglio, cmq, togli l'istruzione header dalla funzione e
mettila nei vari script solo quando utilizzi quella funzione,
probabilmente è questo il problema.
Se vuoi levarti problemi di header, invece di sputare fuori l'immagine
al browser, salvatela sul server (funzioni fopen, fwrite, fclose) e
includila nella pagina tramite il tag <img>

sempre:
Attenzione, ho il sospetto che tu faccia una cosa come questa:
	<body>
		<p>Questa e' una bella font:</p>
		<?php
			ttftext("Bella font", "bella.ttf", 12");
		?>
...e non lo puoi fare. Perché ttftext invia una immagine, e tu stai
invece mandando del testo HTML, e i due non sono compatibili (salvo
orrori in base64... lasciamo stare).
Devi fare così:
	<p>Questa è una bella font:</p>
	<img src="ttftext.php?text=1" />
Poi nel file ttftext.php avrai qualcosa del genere
<?php
	$testi = array(
		0	=> array("Errore", "arial.ttf", 12),
		1	=> array("Bella font", "bella.ttf", 12),
		2	=> array("Altro messaggio", "arial.ttf", 24),
		...
	);
	$txt = isset($_GET['text']) ? (int)$_GET['text'] : 0;
	if (!isset($testi[$txt]))
		$txt = 0;
	$testo	= $testi[$txt];
	ttftext($testo[0], $testo[1], $testo[2]);
?>
Leonardo
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!