imagettfbbox

(PHP 4, PHP 5, PHP 7, PHP 8)

imagettfbbox Ermittelt das umgebende Rechteck eines Textes, der eine TrueType-Schriftart verwendet

Beschreibung

imagettfbbox(
    float$size,
    float$angle,
    string$font_filename,
    string$string,
    array$options = []
): array|false

Diese Funktion berechnet den Begrenzungsrahmen (Bounding Box) eines TrueType-Textes in Pixeln und gibt ihn zurück.

Hinweis:

Vor PHP 8.0.0 war imageftbbox() eine erweiterte Variante von imagettfbbox(), die zusätzlich den Parameter extrainfo unterstützte. Ab PHP 8.0.0 ist imagettfbbox() ein Alias von imageftbbox().

Parameter-Liste

size

Die Schriftgröße in Punkten.

angle

Der Winkel in Grad, in dem string vermessen wird.

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_basedirnicht für fontfile gilt.

string

Die zu vermessende Zeichenkette.

Rückgabewerte

imagettfbbox() gibt im Erfolgsfall ein Array mit 8 Elementen zurück, die die vier Punkte des umgebenden Rechtecks des Texts repräsentieren, und false im Fehlerfall.

SchlüsselWert
0untere linke Ecke, x-Koordinate
1untere linke Ecke, y-Koordinate
2untere rechte Ecke, x-Koordinate
3untere rechte Ecke, y-Koordinate
4obere rechte Ecke, x-Koordinate
5obere rechte Ecke, y-Koordinate
6obere linke Ecke, x-Koordinate
7obere linke Ecke, y-Koordinate

Die Punkte sind relativ zum Text, unabhängig von angle, sodass "obere linke Ecke" bedeutet "in der oberen linken Ecke, wenn der Text horizontal gesehen wird".

Changelog

VersionBeschreibung
8.0.0 Die options wurden hinzugefügt.

Beispiele

Beispiel #1 imagettfbbox()-Beispiel

<?php
// Erzeuge ein 300x150-Bild
$im = imagecreatetruecolor(300, 150);
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);

// Weißer Hintergrund
imagefilledrectangle($im, 0, 0, 299, 299, $white);

// Pfad der Schriftartdatei
$font = './arial.ttf';

// Zunächst ermitteln wir das umgebende Rechteck für den ersten Text
$bbox = imagettfbbox(10, 45, $font, 'Powered by PHP ' . phpversion());

// Dies sind die x- und y-Koordinaten
$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 25;
$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

// Schreibe
imagettftext($im, 10, 45, $x, $y, $black, $font, 'Powered by PHP ' . phpversion());

// Ermittle das umgebende Rechteck für den zweiten Text
$bbox = imagettfbbox(10, 45, $font, 'and Zend Engine ' . zend_version());

// Berechne die Koordinaten, sodass es neben dem ersten Text ist
$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) + 10;
$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

// Schreibe
imagettftext($im, 10, 45, $x, $y, $black, $font, 'and Zend Engine ' . zend_version());

// Ausgabe an den Browser
header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);
?>

Anmerkungen

Hinweis: Diese Funktion ist nur verfügbar wenn PHP mit Freetype unterstützung (--with-freetype-dir=DIR) kompiliert wurde

Siehe auch

  • imagettftext() - Schreibt Text mit TrueType-Schriftarten ins Bild
  • imageftbbox() - Give the bounding box of a text using fonts via freetype2
To Top