Derzeit online: ca. 95 User  
Spenden via PayPal PHP für dich ist auch als Buch erhältlich - im handlichen Format, zum Nachschlagen, Mitnehmen oder gemütlichen nebenbei Lesen. Mit noch mehr Informationen, zusätzlichen Beispielen und Übungsaufgaben.
Jetzt in der aktualisierten Version bei Amazon oder BoD bestellen!


Schnipsel

PHP - Bild erstellen mit gdlib (Text einfügen)

In Grafiken kann man auch Text einsetzen. Wir gehen dabei von der Grafik aus, die im ersten Beispiel erklärt ist.

Bevor wir die Grafik als Datei speichern, schreiben wir jetzt noch einen Text hinein. Dafür wird die Funktion imagettftext verwendet.
imagettftext($bild, 12, 0, 10, 20, $weiss, "arial.ttf", "Ein einfacher Text");
Hierbei werden im ersten Moment erscheckend viele Argumente übergeben:

Zunächst die Bildvariable, wie auch schon bei allen anderen Arbeiten an Bildern.
Der zweite Wert ist die Font-Größe, in unserem Fall also 12 Pixel.
Der nächste Wert ist der Winkel, in dem der Text geschrieben sein soll. 0 ist dabei ganz normaler Text von links nach rechts. Umso höher der Wert ist, umso mehr wird der Text entgegen dem Uhrzeigersinn gedreht. Bei einem Wert von 90 (Grad) wird der Text von unten nach oben geschrieben.
Die folgenden zwei Werte ergeben die Positionierung des Textes und sind die x- und y-Koordinaten der unteren, linken Ecke des Textes.
Der sechste Wert ist die Farbe, hier in Form einer Variablen angegeben, die mit imagecolorallocate ermittelt wurde.
Danach wird der Pfad zum gewünschten Font angegeben. In dem Beispiel muss die Schriftart also im selben Verzeichnis gespeichert werden und trägt den Namen arial.ttf.
Der letzte Wert ist jetzt der anzuzeigende Text, den man natürlich auch nett über eine Variable übergeben kann. Ist der Text zu lang für das Bild, wird er einfach abgeschnitten.

Die Funktion fügt übrigens nicht nur Text in Grafiken ein, sondern kann auch ein Array zurück liefern, dass die Abmessungen des Textes enthält.

Es gibt auch eine kürzere Methode, um Text einzubinden, wobei man aber die Schriftgröße und den Winkel nicht bestimmen kann. Dabei wird die gewünschte Schriftart zunächst über imageloadfont geladen und kann anschließend verwendet werden - sie muss aber im Bitmapformat vorliegen. Es gibt aber auch 5 vordefinierte Schriftarten, die man verwenden kann, wodurch es auch möglich ist, Texte zu erstellen, wenn man keine Bitmapfonts hat.
imagestring($bild, 3, 10, 10, "Text", $weiss);
Auch hier wird zunächst die Bildvariable angegeben. Danach folgt die gewünschte Schrift. Diese muss entweder zuerst über imageloadfont z. B. in einer Variable gespeichert sein, also:
$schriftart = imageloadfont("fontdatei");
oder man verwendet einen Wert von 1 bis 5, der eine vordefinierte Schriftart auswählt.

Danach werden die x- und y-Koordinaten der linken, oberen Ecke (im Gegensatz zur linken, unteren Ecke bei imagettftext) angegeben, gefolgt vom gewünschten Text und der Farbe.

Wer mit dieser Methode einen Text von unten nach oben laufen lassen möchte, kann die Funktion imagestringup benutzen. Diese ist genauso aufgebaut wie imagestring. Die Koordinaten geben die linke, obere Ecke des ersten Buchstabens an.

Die Varianten mit imagestring bzw. imagestringup haben den Nachteil, dass man entweder einen Bitmapfont braucht, oder aber die begrenzte Auswahl von PHP nutzen muss. Allerdings ist auch die Funktion imagettftext nichts ganz unproblematisch, sie setzt nämlich voraus, dass auf dem Server die Freetype-Bibliothek verfügbar ist.

Eine Lösung für alle Fälle gibt es hier also nicht.

Autor: Claudia Unkelbach
© 2001 - 2017 Claudia Unkelbach
Gießener Straße 75, 35396 Gießen