Bei der Verwendung von PHP zum Generieren von Bildern mit Text müssen häufig sichergestellt werden, dass der Text die Grenzen des Bildes nicht überschreitet, wodurch die Gesamtästhetik und die Lesbarkeit beeinflusst werden. PHP bietet eine Vielzahl von Funktionen, um Bilder und Text zu verarbeiten. ImageFontwidth () ist eine sehr praktische Funktion, die uns helfen kann, die Breite eines einzelnen Zeichens mit einer bestimmten Schriftgröße zu erhalten, wodurch die Breite des gesamten Textes berechnet wird.
In diesem Artikel wird im Detail eingeführt, wie Sie ImageFontwidth () verwenden, um die Textbreite zu bestimmen und zu verhindern, dass Text die Grenze beim Zeichnen von Text zum Bild überschreitet.
Die Funktion der ImageFontwidth () -Funktion besteht darin, die Breite eines integrierten Schriftzeichens, das Pixel ist, zurückzugeben. Seine Funktionsdefinition lautet wie folgt:
int imagefontwidth(int $font);
Der Parameter $ -Krafter ist die Schriftgröße und der Wertebereich beträgt normalerweise 1 bis 5, was die fünf eingebauten Schriftgrößen in PHP darstellt.
Durch diese Funktion können wir die Breite jedes Zeichens erhalten und dann die Länge der Zeichenfolge kombinieren, um die Breite des gesamten Textes zu berechnen.
Der folgende Code zeigt, wie die String -Breite berechnet wird, und festzustellen, ob er die angegebene Bildbreite überschreitet:
<?php
// Stellen Sie die Bildbreite ein
$image_width = 200;
// Wählen Sie eine Schriftgröße aus,1 ankommen 5
$font = 3;
// Zeichenfolge zu ziehen
$text = "Dies ist ein Testtext";
// Berechnen Sie die Breite eines einzelnen Zeichens
$char_width = imagefontwidth($font);
// Berechnen Sie die Stringbreite
$text_width = strlen($text) * $char_width;
// Bestimmen Sie, ob der Text die Grenze überschreitet
if ($text_width > $image_width) {
echo "Die Textbreite überschreitet die Bildbreite,Kann jenseits der Grenzen sein";
} else {
echo "Die Textbreite liegt im Bildbereich,Kann gezeichnet werden";
}
?>
Hinweis: Im obigen Code berechnet Strlen () die Bytelänge. Wenn der Text chinesisch ist, wird empfohlen, mb_strlen () zu verwenden, um die Zeichenlänge zu berechnen, um zu vermeiden, dass chinesische Zeichen fälschlicherweise berechnet werden:
$text_length = mb_strlen($text, 'UTF-8');
$text_width = $text_length * $char_width;
Wenn Sie Text auf ein Bild schreiben möchten, können Sie zuerst die Textbreite messen und dann entscheiden, ob Sie die Schriftart reduzieren, den Text abschneiden oder die Zeile unterbrechen müssen. Das folgende Beispiel zeigt, wie Text automatisch auf der Bildbreite abschneidet werden, um zu vermeiden:
<?php
// Erstellen Sie ein leeres Bild
$image_width = 200;
$image_height = 50;
$image = imagecreatetruecolor($image_width, $image_height);
// Hintergrundfarbe setzen
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);
// Schriftfarbe setzen
$text_color = imagecolorallocate($image, 0, 0, 0);
// Charakterinhalt
$text = "Dies ist ein Testtext,Es könnte lang sein";
// Wählen Sie eine Schriftgröße aus
$font = 3;
$char_width = imagefontwidth($font);
// Berechnen Sie, wie viele Zeichen höchstens angezeigt werden können
$max_chars = floor($image_width / $char_width);
// Text abschneiden,Verhindern, dass die Bildbreite überschreitet
if (mb_strlen($text, 'UTF-8') > $max_chars) {
$text = mb_substr($text, 0, $max_chars, 'UTF-8') . '...';
}
// Berechnen Sie die Textbreite,Mittelanzeige
$text_length = mb_strlen($text, 'UTF-8');
$text_width = $text_length * $char_width;
$x = ($image_width - $text_width) / 2;
$y = ($image_height - imagefontheight($font)) / 2;
// Text zeichnen
imagestring($image, $font, $x, $y, $text, $text_color);
// Ausgabe Bild
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
Verwenden Sie ImageFontwidth ($ font), um die Breite eines einzelnen Zeichens zu erhalten.
Kombinieren Sie mb_strlen (), um die Anzahl der Zeichen in der Zeichenfolge zu berechnen, um die Gesamtbreite des Textes zu erhalten.
Vergleichen Sie die Textbreite mit der Bildbreite, um festzustellen, ob sie sie überschreitet.
Schneiden Sie den Text ab oder passen Sie die Schriftgröße entsprechend der Situation an, um sicherzustellen, dass sich der Text im Bildbereich befindet.
Diese Methode eignet sich für Szenen, in denen Text unter Verwendung von PHP-integrierten Schriftarten gezeichnet wird.
Wenn Sie Text mit TTF -Schriftarten zeichnen müssen, wird empfohlen, ImagettFBBox () genauer zu messen.