In PHP ist die Verwendung der GD -Bibliothek für die Bildverarbeitung eine übliche Operation. Wenn Sie Textblöcke mit Hintergrundfarben auf einem Bild zeichnen möchten, sind die beiden Funktionen imageFontwidth () und imageFilledRectangle () sehr nützlich. In diesem Artikel wird ausführlich vorgestellt, wie der Hintergrund -Textblock -Effekt durch diese beiden Funktionen erreicht werden kann.
ImageFontwidth (int $ font): int
Diese Funktion gibt die Zeichenbreite der angegebenen integrierten Schriftart zurück. Hier ist $ font eine Ganzzahl, die die integrierte Schriftgröße der GD-Bibliothek darstellt (normalerweise 1 ~ 5). Sobald wir die Breite der Schriftart kennen, können wir die Breite des Textblocks berechnen.
ImageFilledRectangle (Ressource $ Image, int $ x1, int $ y1, int $ x2, int $ y2, int $ color): bool
Diese Funktion zeichnet ein gefülltes Rechteck auf das Bild $ $ Image mit Koordinaten in der oberen linken Ecke ( $ x1 , $ y1 ) und der unteren rechten Ecke ( $ x2 , $ y2 ), und die Füllfarbe ist $ Farbe .
Wenn Sie diese beiden Funktionen kombinieren, können Sie zuerst die Größe des Hintergrundrechtecks basierend auf der Textlänge und Schriftbreite berechnen, dann das Rechteck zeichnen und schließlich den Text zeichnen, wodurch ein Textblock mit einem Hintergrund bildet.
<?php
// Erstellen Sie eine leere Leinwand
$width = 300;
$height = 100;
$image = imagecreatetruecolor($width, $height);
// Farbe setzen
$bgColor = imagecolorallocate($image, 255, 255, 255); // Weißer Hintergrund
$textColor = imagecolorallocate($image, 0, 0, 0); // Schwarzer Text
$rectColor = imagecolorallocate($image, 200, 200, 200); // Graue Hintergrundblöcke
// Füllen Sie die Hintergrundfarbe der Leinwand aus der Leinwand
imagefill($image, 0, 0, $bgColor);
// Text und Schriftarten
$text = "PHP Beispiel für Textblöcke mit Hintergrund";
$font = 5; // GD Eingebaute Schriftgröße,Umfang 1~5
// Berechnen Sie die Breite und Höhe des Textes
$fontWidth = imagefontwidth($font);
$fontHeight = imagefontheight($font);
$textWidth = $fontWidth * strlen($text);
$textHeight = $fontHeight;
// Hintergrund -Rechteckkoordinaten(Einen Vorsprung hinterlassen)
$padding = 5;
$x1 = 50;
$y1 = 30;
$x2 = $x1 + $textWidth + 2 * $padding;
$y2 = $y1 + $textHeight + 2 * $padding;
// Füllen Sie das Rechteck als Hintergrund zeichnen
imagefilledrectangle($image, $x1, $y1, $x2, $y2, $rectColor);
// Text auf dem Hintergrund zeichnen(Achten Sie auf den Offsetpadding)
imagestring($image, $font, $x1 + $padding, $y1 + $padding, $text, $textColor);
// Ausgabe Bild
header('Content-Type: image/png');
imagepng($image);
// Ressourcen frei machen
imagedestroy($image);
?>
Verwenden Sie ImageFontwidth ($ font) und ImageFontheight ($ font), um die Breite und Höhe eines einzelnen Zeichens der Schriftart zu erhalten.
Berechnen Sie die Breite des gesamten Textes basierend auf der Länge der Zeichenfolge.
Legen Sie eine geeignete Marge $ -Padding ein, damit das Hintergrundrechteck nicht am Text hält.
Zeichnen Sie das Hintergrundrechteangle mit imageFilledRectangle () .
Verwenden Sie dann Imagestring (), um Text auf das Hintergrundrechteck zu zeichnen, um sicherzustellen, dass der Text innere Ränder enthält.
Sie können die Farbe des Hintergrundblocks ändern, indem Sie den Farbwert von $ rectcolor einstellen.
In Kombination mit anderen GD -Funktionen können mehr Effekte erzielt werden, z. B. abgerundete Rechtecke, Schatten usw.
Wenn Sie komplexere Schriftstile unterstützen müssen, können Sie ImagettFtext () verwenden, um mit Schriftartdateien flexiblere Textrendern zu erzielen.