Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte
hier. Zur Startseite kommen Sie
hier.
Zeilenabstand mit Gdlip
Hallo, sitze jetzt schon verdammt lange an folgendem Problem:
ich möchte mehrer Zeilen Text mit Hilfe der GDlib in ein PNG schreiben. Die einzelnen Zeilen sind in einem Array ($text[]) gespeicht. Das Array durchlaufe ich mit einer FOR-Schleife und ermittle mit Hilfe der imagettftext - Funktion die Texthöhe. Die geht auch hervorragend, solange man die Schriftgröße nicht verändert! Wenn man die Schriftgröße ändert, überlappen die Buchstaben teilweise.
Kennt jemand dieses Problem oder hatte jemand schon das gleiche Problem und hat ne Lösung?
Hier ein Codeauszug:
Code: In Zwischenablage kopieren (nur IE)
Bin für jeden Tipp Dankbar!!!
Antworten
Sieht ganz so aus,als wenn man nur die ascent-Maße der Schrift erhält, nicht die descent-Maße (also die unterhalb der baseline)
Code: In Zwischenablage kopieren (nur IE)
wie man an diese Werte ran kommt, weiß ich leider nicht :(
Zitat:
$box1 = imagettftext($im2, $schriftgroesse[$t], 0, 0, 0, $schwarz, "schriften/".$font[$t]."".$font_style[$t].".ttf", $text[$t]);
$width_text = ($box1[2] - $box1[0]);
...
$box1 = imagettftext($im2, $schriftgroesse[$t], 0, 0, 0, $schwarz, "schriften/".$font[$t]."".$font_style[$t].".ttf", $text[$t]);
$height_text = $box1[1] - $box1[7];
Waum liest Du die boundingbox eigentlich zweimal aus? Höhe und Breite ändern sich zwischendurch doch nicht. Und warum mit einem Dummy-Bild? Es gibt doch
http://php.net/imagettfbboxZitat:
$x=$bild[breite]-$width_text;
sofern
breite kein define() ist:
http://php.net/language.types.array#language.types.array.donts ;)
2.
Hat den keiner noch nen Tipp???
Ich bin am verzweifeln! :o(
3.
ah, ich habe meinen Fehler gefunden und ich denke, das ist auch der Fehler bei Dir
Code: In Zwischenablage kopieren (nur IE)
$height_text = $box1[1] - $box1[7]; <- das ist zwar richtig, aber die y-Positionierung bei imagettftext geschieht über die baseline (die blaue Linie in meinem Skript).
Versuch es mal so
Code: In Zwischenablage kopieren (nur IE)
(nur per syntaxcheck getestet)
4.
Du bist der Held des Tages!!!!!!!
Es geht....!!!!
Ich saß jetzt wirklich fast 3 ganze Tage an dem Problem, und kam einfach nicht drauf!!!
DANKE :o)