(PHP 4, PHP 5, PHP 7, PHP 8)
imagettftext — Schreibt Text mit TrueType-Schriftarten ins Bild
$image
,$size
,$angle
,$x
,$y
,$color
,$font_filename
,$text
,$options
= []
Schreibt den angegebenen text
ins Bild unter
Verwendung von True-Type-Schriftarten.
Hinweis:
Vor PHP 8.0.0 war imagefttext() eine erweiterte Variante von imagettftext(), die zusätzlich den Parameter
extrainfo
unterstützte. Ab PHP 8.0.0 ist imagettftext() ein Alias von imagefttext().
image
Ein GdImage-Objekt, das von einer der Funktionen zur Bilderzeugung, z. B. imagecreatetruecolor(), zurückgegeben wurde.
size
Die Schriftgröße in Punkten.
angle
Der Winkel in Grad, wobei 0 Grad einen von links nach rechts zu lesenden Text ergibt. Höhere Werte bewirken eine Drehung gegen den Uhrzeigersinn. Ein Wert von 90 ergibt zum Beispiel einen von unten nach oben zu lesendem Text.
x
Die per x
und y
angegebenen Koordinaten definieren den Startpunkt des ersten Zeichens
(in etwa die linke untere Ecke). Das ist anders als bei der
Funktion imagestring(), bei der
x
und y
die obere rechte
Ecke des ersten Zeichens darstellen. Zum Beispiel ist oben links 0, 0.
y
Die y-Koordinate. Diese legt die Position der Grundlinie der Schriftart fest, nicht den untersten Rand des Zeichens.
color
Der Farbindex. Die Verwendung des negativen Indexwerts schaltet das Antialiasing ab. Siehe imagecolorallocate().
fontfile
Der Pfad zu der TrueType-Schriftart, die verwendet werden soll.
Der Pfad zu der TrueType-Schriftart, die verwendet werden soll.
Abhängig davon, welche Version der GD-Bibliothek PHP verwendet, wird,
wenn fontfile
nicht mit einem
vorangestellten /
beginnt, .ttf
an den Dateinamen angehängt und die Bibliothek versucht,
diesen Dateinamen entlang eines von der Bibliothek definierten
Schriftarten-Pfades zu suchen.
Bei der Verwendung von Versionen der GD-Bibliothek, die älter als
2.0.18 sind, wurde ein space
-Zeichen, anstelle eines
Semikolons als Pfad-Trennzeichen für verschiedene Schriftdateien
verwendet. Die unbeabsichtigte Verwendung dieser Eigenschaft führt zu
einer Warnmeldung: Warnung: Schriftart konnte nicht
gefunden/geöffnet werden
. Für diese betroffenen Versionen
besteht die einzige Lösung darin, die Schriftart in einen Pfad zu
verschieben, der keine Leerzeichen enthält.
In vielen Fällen, in denen sich eine Schriftart im selben Verzeichnis befindet wie das Skript, das sie verwendet, kann der folgende Trick die Probleme beim Einbinden lösen.
<?php
// Setzten der Umgebungsvariablen für GD
putenv('GDFONTPATH=' . realpath('.'));
// Benennen der zu verwendenden Schriftart
// (zu beachten ist das Fehlen der Erweiterung .ttf)
$font = 'IrgendeineSchriftart';
?>
Hinweis:
Zu beachten ist, dass open_basedir nicht für
fontfile
gilt.
text
Die UTF8-kodierte Text-Zeichenkette.
Kann dezimale numerische Zeichen-Entity-Referenzen (in der Form €) enthalten, um Zeichen außerhalb des ASCII-Bereiches zu referenzieren. Das hexadizimale Format (wie ©) wird ebenfalls unterstützt. UTF-8-kodierte Zeichenketten können direkt übergeben werden.
Benannte Zeichen-Entity-Referenzen, wie ©, werden nicht unterstützt. html_entity_decode() kann verwendet werden, um diese Zeichen-Entity-Referenzen nach UTF-8 zu konvertieren.
Wenn ein Zeichen in der Zeichenkette verwendet wird, das von der Schriftart nicht untersützt wird, wird es durch ein hohles Rechteck ersetzt.
Gibt ein Array mit 8 Elementen zurück, die die vier Punkte des umgebenden
Rechtecks des Textes repräsentieren. Die Reihenfolge der Punkte ist unten
links, unten rechts, oben rechts und oben links. Die Punkte sind relativ
zum Text, unabhängig vom Winkel, sodass "obere linke Ecke" bedeutet "in der
oberen linken Ecke, wenn der Text horizontal gesehen wird". Im Fehlerfall
wird false
zurückgegeben.
Version | Beschreibung |
---|---|
8.0.0 |
Die options wurden hinzugefügt.
|
Beispiel #1 imagettftext()-Beispiel
Dieses Beispielskript erzeugt ein weißes 400x30 Pixel großes PNG mit dem Text "Testing..." in schwarz (mit grauem Schatten) in der Schriftart Arial.
<?php
// Setze den Content-Type
header('Content-Type: image/png');
// Erzeuge das Bild
$im = imagecreatetruecolor(400, 30);
// Erzeuge einige Farben
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
// Der zu zeichnende Text
$text = 'Testing...';
// Bei Bedarf ist der Pfad anzupassen
$font = 'arial.ttf';
// Füge etwas Schatten zum Text hinzu
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
// Füge den Text hinzu
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
// Die Verwendung von imagepng() ergibt eine bessere Textqualität als imagejpeg()
imagepng($im);
imagedestroy($im);
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Hinweis: Diese Funktion ist nur verfügbar wenn PHP mit Freetype unterstützung (--with-freetype-dir=DIR) kompiliert wurde