Ich verwende imagettfbbox, um Text zentriert und rechtsbündig in Grafiken auszurichten. Nur leider ist das Ergebnis ungenau, es kommt zu Abweichungen im Bereich von 1-2 Pixeln, die aber bereits deutlich auffallen, wenn alles rechtsbündig sein soll. Leider scheint es auch kein vitales Muster zu geben, sodaß man es nicht korrigieren kann. Gibt es eine Lösung für dieses Problem?
Ankündigung
Einklappen
Keine Ankündigung bisher.
imagettfbbox ungenau, gibt es Abhilfe?
Einklappen
Neue Werbung 2019
Einklappen
X
-
Stichworte: -
-
-
Moin,
ich verwende folgendes um einen Text zu zentrieren. Damit kannst du ihn auch rechtsbündig ausrichten.
Ich hoffe ich habe beim Umschreiben keinen Fehler gemacht, eigentlich sah der Code so aus (auch nur ein Auszug):PHP-Code:$font_size = 2 // zw. 1-5
$letter_width = 4; // fest
$adjust = -2; // fest
// 400 ist die Hälfte der Breite (800) beim Zentrieren
// alles was nach dem - kommt, soll die Hälfte der Breite des Strings sein
echo 400 - (strlen($string) * ($font_size + $letter_width) - 2) / 2;
Um den Text rechtsbündig auszurichten, musst du beiPHP-Code:const LETTER_WIDTH = 4;
const ADJUST_SIZE = -2;
protected function adjust_size($result_size) {
return ($result_size + self::ADJUST_SIZE) / 2;
}
// zentrieren
// $width = Breite der Grafik
$center = $width / 2;
$center -= $this->adjust_size(strlen($branch->name) * ($branch->font_size + self::LETTER_WIDTH));
Code:$center = $width / 2;
angeben und / 2 beiCode:$center = $width;
weglassen =>Code:echo 400 - ((strlen($string) * ($font_size + $letter_width)) - 2) / 2;
Jedoch habe ich noch nicht mit TrueType Fonts gearbeitet und weiß nicht wie es sich dort mit der Breite der einzelnen Buchstaben verhält. Bei der Schriftart der GD-Bibliothek hat jeder Buchstabe dieselbe Breite! Ich denke das wird das Hauptproblem bei TT Fonts sein, steig doch auf die Schriftart der GD-Biblio um. Für die meisten Anwendungen reicht dieseCode:echo 400 - ((strlen($string) * ($font_size + $letter_width)) - 2);
Kommentar

Kommentar