Bei Verwendung der GD -Bibliothek von PHP für die Bildtextverarbeitung stoßen Sie häufig auf das Problem, dass die Textgröße nicht mit der angegebenen Breite übereinstimmt. Besonders wenn wir möchten, dass der Text perfekt auf eine bestimmte Breite des Bildes passt, wird die Anpassung der Schriftgröße zum Schlüssel. Die ImageFontwidth () -Funktion in PHP, kombiniert mit Schriftartnummerierung, kann uns helfen, die Textbreite dynamisch zu berechnen, wodurch die Schriftgröße automatisch so eingestellt wird, dass der Text nur die angegebene Breite ausfüllt.
In diesem Artikel wird im Detail eingeführt, wie Sie ImageFontwidth () und Schriftnummer verwenden, um den Effekt der automatischen Anpassung der Textgröße zu erreichen.
ImageFontwidth (int $ font) gibt die Breite eines einzelnen Zeichens in Pixeln zurück, die die integrierte Schriftnummer angeben. Die GD-Bibliothek verfügt über 5 eingebaute Schriftarten, die Zahlen 1 bis 5 und die Schriftgröße erhöht die Sequenz.
Schriftnummer | Schriftgröße (Pixel) | veranschaulichen |
---|---|---|
1 | 5x8 | Mindestschrift |
2 | 6x12 | Kleinere Schriftarten |
3 | 7x13 | Mittelschrift |
4 | 8x15 | Größere Schrift |
5 | 9x15 | Maximale Schrift |
Mit der Schriftartion können wir schnell die Schriftbreite erhalten und die Breite des gesamten Textabsatzes berechnen.
Angenommen, es gibt einen Texttext und eine gewünschte maximale Breite .
Die Schritte sind wie folgt:
Beginnen Sie mit der maximalen Schriftnummer (5).
Multiplizieren Sie ImageFontwidth () mit der Textlänge, um die Breite des gesamten Textabsatzes zu berechnen.
Wenn die Breite kleiner oder gleich Maxwidth ist, wählen Sie die Schriftgröße aus.
Wenn alle überschritten sind, wählen Sie die minimale Schriftart.
Hier finden Sie ein vollständiges Beispiel dafür, wie Sie automatisch die entsprechende Schriftgröße auswählen und Text auf das Bild zeichnen:
<?php
// Charakterinhalt
$text = "Beispiel für automatische Schriftgröße";
// Erwartete maximale Breite(Einheit:Pixel)
$maxWidth = 200;
// Versuchen Sie eine Schriftnummer von5ankommen1
$font = 5;
for ($i = 5; $i >= 1; $i--) {
$textWidth = imagefontwidth($i) * strlen($text);
if ($textWidth <= $maxWidth) {
$font = $i;
break;
}
}
// Erstellen Sie ein Bild,Breite ist $maxWidth,Höhe ist Schrifthöhe
$fontHeight = imagefontheight($font);
$im = imagecreatetruecolor($maxWidth, $fontHeight + 10);
// Farbverteilung
$bgColor = imagecolorallocate($im, 255, 255, 255); // Weißer Hintergrund
$textColor = imagecolorallocate($im, 0, 0, 0); // Schwarzer Text
// Füllen Sie den Hintergrund
imagefilledrectangle($im, 0, 0, $maxWidth, $fontHeight + 10, $bgColor);
// Berechnen Sie den TextstartXkoordinieren,Zentrieren erkennen
$textWidth = imagefontwidth($font) * strlen($text);
$x = ($maxWidth - $textWidth) / 2;
$y = 5;
// Text ausgeben
imagestring($im, $font, $x, $y, $text, $textColor);
// Ausgabe Bild
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>
Diese Methode verwendet die Eigenschaften der festen Breite der integrierten Schriftart der GD-Bibliothek, um die Textbreite schnell zu berechnen.
Strlen () eignet sich für englische und Single-Byte-Zeichen. Wenn es chinesische und andere Multi-Byte-Zeichen enthält, wird empfohlen, mb_strlen () zu verwenden und die Berechnungslogik anzupassen.
Wenn Sie TTF -Schriftarten verwenden müssen, können Sie ImagettFBBox () verwenden, um genauere Textbreiten zu erhalten.
Diese Lösung ist einfach und effizient und für schnelle Nachfrage -Szenarien geeignet.