Seite 1 von 1

[PHP] Zeilenumbrüche u. anpassung der Bildgröße

Verfasst: 10.02.2008 17:10
von gnol
Ich habe hier ein Bild das per PHP Generiert wird:
http://sig-box.de/sig.php

Hier der Code:

Code: Alles auswählen

<?php
header("Content-type: image/png");

include "./inc/db.php";
include "./f/show_sig.php";
include "./f/counter.php";

$im = ImageCreate (300, 200);
ImageColorAllocate($im, 255, 255, 255);
$col = ImageColorAllocate($im, 0,0,0);

$sql = "XXX";
$c = mysql_query($sql) or die (mysql_error());
$a = mysql_fetch_assoc($c);

$text = $a['XXX'];

imagettftext($im, 9, 0 , 10 , 30, $col, "arial.ttf" , $text);

ImagePNG($im);
imagedestroy($im);
?>
Öfters sind die Texte aber größer als das Bild.. wie kann ich es machen, dass php mir automatisch ein Zeilenumbruch einbaut, wenn es aus dem Bild "rausläuft". Und wie passe ich die Bildgröße am besten mit dem Text an?

Verfasst: 10.02.2008 21:18
von gn#36
Das kannst du nur machen indem du selbst weißt wie breit so ein Buchstabe ist und dann die Breite vorausberechnest, jedenfalls wüsste ich keinen Mechanismus der das von alleine tut. Du musst dann vorausberechnen wie viel in eine Zeile passt und nur so viel auch da reinschreiben. Dann musst du den Ort an dem die nächste Zeile gesetzt werden soll manuell einstellen und den Rest eintragen. Von alleine dürfte da nix gehen. Wenn die Berechnung genau sein soll, dann brauchst du genaue Informationen über die Buchstabenbreite der einzelnen Buchstaben (ein i braucht weniger Platz als ein m) und musst die aufsummieren wobei du die Zeilenbreite kennst. Wenn du die Breite überschreitest musst du die Schleife abbrechen und alles bis (ausschließlich) dem aktuellen Buchstaben in die Zeile packen. Wenn du es hübsch haben willst gehst du sogar noch bis zum letzten Leerzeichen zurück.

Verfasst: 10.02.2008 21:26
von gnol
kannst du mir verraten welche Funktionen ich dazu brauche?

Verfasst: 10.02.2008 21:35
von gn#36
Nur ein paar for oder while Schleifen und ein paar Variablen sowie die Breite der Buchstaben in Pixeln (wenn du es genau haben willst in einem Array mit Einträgen für alle möglichen Zeichen, sonst eben einen Wert festlegen, der ein wenig über dem Mittelwert liegt).

Verfasst: 10.02.2008 23:53
von Jan500
hi

evtl ist [php:imagefontwidth] hilfreich ;)

bzw du kannst auch monospaceschrifarten benutzen ;)


gruß Jan