Bei Verwendung einer Truetype-Schriftart, verwenden Sie die imageftbbox
Funktion, um den Begrenzungsrahmen für einen Zeichensatz mit Ihrer Schriftart zu erhalten. Der Begrenzungsrahmen gibt die Abstände vom Basispunkt zu den vier Ecken in dem vom Text belegten Rechteck an. Also, wenn Sie den Begrenzungsrahmen in $bb
speichern und imagefttext
verwenden, um Text in ($x, $y)
zu setzen, dann werden die Ecken haben diese Koordinaten:
($x + $bb[6], $y + $bb[7]) ($x + $bb[4], $y + $bb[5])
+-------+
| Hello |
+-------+
($x + $bb[0], $y + $bb[1]) ($x + $bb[2], $y + $bb[3])
, die uns sagt, dass wir eine Bildbreite von ($x + $bb[2]) - ($x + $bb[6]) = $bb[2] - $bb[6]
wollen und in ähnlicher Weise eine Bildhöhe von $bb[3] - $bb[7]
. Der Text sollte dann an den Koordinaten gemacht werden (-$bb[6], -$bb[7])
innerhalb dieses Bild, da wir
(0, 0) = ($x + $bb[6], $y + $bb[7]) ==> $x = -$bb[6] and $y = -$bb[7]
Sie können es versuchen, mit diesem Code haben wollen. Legen Sie es in eine Datei img.php
genannt und wechseln Sie zu img.php?q=Hello
zu testen:
<?php
header("Content-type: image/png");
$q = $_REQUEST['q'];
$font = "Impact.ttf";
$size = 30;
$bbox = imageftbbox($size, 0, $font, $q);
$width = $bbox[2] - $bbox[6];
$height = $bbox[3] - $bbox[7];
$im = imagecreatetruecolor($width, $height);
$green = imagecolorallocate($im, 60, 240, 60);
imagefttext($im, $size, 0, -$bbox[6], -$bbox[7], $green, $font, $q);
imagepng($im);
imagedestroy($im);
?>
Wenn Sie die Bitmap-Fonts verwenden, anstatt, dann schauen Sie sich die imagefontwidth
und imagefontheight
Funktionen.
I ttf Schriftarten verwenden möchten, schaute ich auf der imageftbbox einige der Beispiele an, aber ich kann nicht die Dimensionen des Textes zu bekommen scheinen. – usertest
Ja, es tut mir leid, dass ich zuerst die falsche Frage beantwortet habe - jetzt habe ich Code für TrueType-Fonts angegeben. –
Ich habe den Code ausprobiert und erhalte den Fehler "Das Bild" test.php "kann nicht angezeigt werden, weil er Fehler enthält." – usertest