Start · Sprachen · PHP · Referenz · imagestring

imagestring

Funktion

Zeichnet einen horizontalen Text-String auf ein GD-Bild an der angegebenen Position mit der gewählten Schriftart und Farbe.

seit PHP 5.0.0 Kategorie: image

Signatur

imagestring(GdImage $image, GdFont|int $font, int $x, int $y, string $string, int $color): bool

Beschreibung

imagestring() rendert einen einfachen horizontalen Text direkt in eine GD-Bildressource. Die Funktion eignet sich für schnelle Beschriftungen von Grafiken, Wasserzeichen oder einfache Bild-Annotationen, wenn keine TrueType- oder FreeType-Schriften benötigt werden.

Der Parameter font akzeptiert entweder einen Wert von 1 bis 5 für die eingebauten GD-Bitmap-Schriftarten (1 = kleinste, 5 = größte) oder ein GdFont-Objekt, das mit imageloadfont() geladen wurde. Die Position (x, y) bezeichnet die obere linke Ecke des Textes in Pixeln.

Für qualitativ hochwertige Typografie mit Anti-Aliasing, variablen Schriftgrößen und TTF-/OTF-Schriften sollte stattdessen imagettftext() oder imagefttext() verwendet werden. imagestring() ist jedoch ohne externe Bibliotheken sofort verfügbar und hat keine Abhängigkeiten.

Die Schriftfarbe muss zuvor mit imagecolorallocate() erzeugt worden sein. Das Zeichen-Koordinatensystem beginnt oben links (0, 0).

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Das Ziel-Bildobjekt, auf das gezeichnet wird. Wird typischerweise mit imagecreatetruecolor(), imagecreatefromjpeg() o. ä. erzeugt.
$font Pflicht GdFont|int Die zu verwendende Schriftart. Ganzzahlen 15 wählen eine der eingebauten GD-Bitmap-Schriften aus (aufsteigende Größe). Alternativ ein GdFont-Objekt aus imageloadfont().
$x Pflicht int X-Koordinate der oberen linken Ecke des Textes in Pixeln (ab der linken Bildkante).
$y Pflicht int Y-Koordinate der oberen linken Ecke des Textes in Pixeln (ab der oberen Bildkante).
$string Pflicht string Der auszugebende Text. Unterstützt nur ASCII-Zeichen; für Umlaute oder Unicode ist imagettftext() besser geeignet.
$color Pflicht int Die Textfarbe als Farb-Identifier, der zuvor mit imagecolorallocate() oder imagecolorallocatealpha() erzeugt wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. ungültiges Bildobjekt).

Beispiele

Einfache Textbeschriftung auf einem Bild

<?php
// Bild erstellen
$image = imagecreatetruecolor(300, 100);

// Hintergrundfarbe (weiß)
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);

// Textfarbe (dunkelblau)
$darkBlue = imagecolorallocate($image, 0, 0, 139);

// Text mit eingebauter Schriftgröße 5 zeichnen
imagestring($image, 5, 10, 35, 'Hallo, Welt!', $darkBlue);

// Als PNG ausgeben
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
(PNG-Bild mit dem Text "Hallo, Welt!" in dunkelblau auf weißem Hintergrund)

Bild mit mehreren Zeilen und unterschiedlichen Schriftgrößen

<?php
$image = imagecreatetruecolor(400, 150);

$bg    = imagecolorallocate($image, 240, 240, 240);
$red   = imagecolorallocate($image, 200, 0, 0);
$black = imagecolorallocate($image, 0, 0, 0);

imagefill($image, 0, 0, $bg);

// Titel mit großer Schrift (Größe 5)
imagestring($image, 5, 10, 10, 'Messung abgeschlossen', $red);

// Details mit kleiner Schrift (Größe 2)
imagestring($image, 2, 10, 45, 'Datum: ' . date('d.m.Y'), $black);
imagestring($image, 2, 10, 60, 'Ergebnis: 42.7 ms', $black);
imagestring($image, 2, 10, 75, 'Status: OK', $black);

header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
(PNG-Bild mit rotem Titel und drei schwarzen Detail-Zeilen)

// Wichtig · Fallstricke

Zeichensatz-Einschränkung: Die eingebauten GD-Schriften unterstützen nur den ASCII-Zeichensatz (Zeichen 0–127 bzw. den erweiterten Latin-1-Bereich). Umlaute wie ä, ö, ü sowie andere Nicht-ASCII-Zeichen werden möglicherweise nicht korrekt dargestellt. Für internationale Texte sollte imagettftext() mit einer geeigneten TTF-Schriftdatei eingesetzt werden.

Koordinaten: Die Position bezieht sich auf die obere linke Ecke des Textes — im Gegensatz zu imagettftext(), das die Baseline des ersten Zeichens verwendet.

PHP 8.0: Ab PHP 8.0 wird anstelle von resource ein GdImage-Objekt verwendet. Bestehender Code, der das Ergebnis von imagecreate*() direkt weitergibt, bleibt kompatibel.