probleme mit ImageTTFText()

fishguts

Erfahrenes Mitglied
ich hab nen kleines script geschrieben, das einen eingegeben text auf ein vorhandenes bild schreiben soll
http://prelisten.de/shoutbox/shoutbox.html
mein problem ist jetzt allerdings, dass, egal, was ich eingebe, immer nur "kästchen" auf das bild geschrieben werden - wo liegt der fehler?

hier der code:
PHP:
<?php
if ( $_POST[sent] )
{
	Header ("Content-type: image/png");
	
	$img_src = ImageCreateFromPNG("images/shoutbox.png");
	$img_new = "images/shoutbox_tmp.png";
	$font_src = "/usr/local/httpd/htdocs/kunden/web188/html/nuked/shoutbox/fonts/SEVENET7.TTF";
	$white   = ImageColorAllocate ($img_src, 255, 255, 255);
	$black = ImageColorAllocate ($img_src, 0, 0, 0);

	ImageTTFText($img_src, 8, 0, 6, 40, $black, $font_src, "$message");
	ImageTTFText($img_src, 8, 0, 5, 39, $white, $font_src, "$message");
	if ( file_exists($img_new) );
	{
		unlink($img_new);
	}
	ImagePNG($img_src, $img_new);
	ImageDestroy($img_src);
}
?>
ich hab echt keine ahnung, wo der fehler noch liegen könnte :(
 
stimmt der dateiname der schriftart (gross- und kleinschreibung beachten - das ist ein linux-server)? unterstützt die schriftart die zu schreibenden zeichen?
 
normalerweise liegt sowas ja an der schriftdatei.

hast du schonmal eine andere probiert?
einfach mal so zum test.

//edit..
nein, 1min zu spät

am pfad kanns aber wohl nicht liegen. dann kommt normal ne fehlermeldung, bei mir jedenfalls.
 
ich glaub, ich hab den fehler gefunden
sevenet7.ttf ist eine truetypefont - hier kommen die kästchen
arial ist eine opentypefont - hier funktioniert alles prima
kann es sein, dass die funktion nicht mit truetypes arbeitet?
kennt ihr vielleicht ein programm, um schriften in opentype zu konvertieren?
 
kennst du vielleicht noch eine ordentliche pixel-font?
hab jetzt erstmal nen anderes problem:
wenn ich den text eingeben und abschicke, wird zuerst nur das alte bild angezeigt, wenn ich dan einmal F5 drücke wird erst das neue angezeigt
http://www.prelisten.de/shoutbox/shoutbox.html

PHP:
<html>
<head>
<title>::Shoutbox::</title>
<?php
if ( $_POST[sent] )
{
	$img_src = ImageCreateFromPNG("images/shoutbox.png");
	$img_new = "images/shoutbox_tmp.png";
	$font_src = "/usr/local/httpd/htdocs/kunden/web188/html/nuked/shoutbox/fonts/arial.ttf";
	$white   = ImageColorAllocate ($img_src, 255, 255, 255);
	$black = ImageColorAllocate ($img_src, 0, 0, 0);

	ImageTTFText($img_src, 8, 0, 6, 40, $black, $font_src, "$_POST[message]");
	ImageTTFText($img_src, 8, 0, 5, 39, $white, $font_src, "$_POST[message]");
	if ( file_exists($img_new) );
	{
		unlink($img_new);
	}
	ImagePNG($img_src, $img_new);
	ImageDestroy($img_src);
}
?>
</head>
<body bgcolor="#666666">
<div align="center"> <img src="images/shoutbox_tmp.png"> </div>
</body>
</html>
woran kann das jetzt wieder liegen?
 
das liegt daran dass das bild in dem browser cache geladen wird
nimm einfach nen entsprechenden meta tag um das zu unterbinden oder häng an die url vom bild ne zuffalszahl(zb. uhrzeit) an
 
warum speicherst du das bild zwischen.

setz einfach folgenden code in eine datei, von mir aus bild.php, und achte darauf, dass keine leerzeichen vor dem php-tag kommen.

PHP:
<?php
if ( $_POST[sent] )
{
    $img_src = ImageCreateFromPNG("images/shoutbox.png");
    $font_src = "/usr/local/httpd/htdocs/kunden/web188/html/nuked/shoutbox/fonts/arial.ttf";
    $white   = ImageColorAllocate ($img_src, 255, 255, 255);
    $black = ImageColorAllocate ($img_src, 0, 0, 0);

    ImageTTFText($img_src, 8, 0, 6, 40, $black, $font_src, "$_POST[message]");
    ImageTTFText($img_src, 8, 0, 5, 39, $white, $font_src, "$_POST[message]");
    header("Content-Type: image/png");
    ImagePNG($img_src);
    ImageDestroy($img_src);
}
?>

dann bindest du dieses bild in deine datei ein, indem du einfach in dem img-tag darauf verweist.

Code:
 <img src="bild.php" ...>

dann ist auch das zwischenspeichern weg.
falls der browser casht, kannst du eben noch eine zufallszahl hinter die uri setzen.
zb: bild.php?r=(random)
 
Zurück