Bei der Verarbeitung von Bildern in PHP ist es häufig erforderlich, Text auf das Bild zu zeichnen, und es wird erwünscht, die Position und Farbe des Textes genau zu steuern. Dieser Artikel konzentriert sich darauf, wie die Funktion der ImageFontwidth () -Funktion in Kombination mit ImageColOralCocate () verwendet wird, um den Effekt des Ausgabe von Farbtext und die dynamische Berechnung der Textbreite zu erreichen, damit wir während der Bildverarbeitung genauere Layout erreichen können.
ImageFontwidth (int $ font): int
Diese Funktion gibt die Zeichenbreite der angegebenen integrierten Schriftart in Pixel zurück. Die in den PHP eingebauten Schriftzahlen reichen von 1 bis 5, und verschiedene Schriftgrößen entsprechen unterschiedlichen Breiten.
ImageColoralLaCate (Ressource $ Image, int $ rot, int $ green, int $ blau): int int
Weisen Sie der Bildressource eine Farbe zu und der Farbwert wird mit drei Parametern RGB angegeben. Gibt die Kennung der Farbe zurück, die für nachfolgende Zeichnungen verwendet wird.
Wenn Sie Text zeichnen, müssen Sie normalerweise die Breite des Textes kennen, um sich zu zentrieren, auszurichten oder zu leiten. Da die Schriftbreite der Funktion der ImageString () festgelegt ist, kann die Breite jedes Zeichens durch ImageFontwidth () erhalten und dann mit der Länge der Zeichenfolge multipliziert werden, um die Breite des gesamten Textes zu erhalten.
Hier ist ein einfaches Beispiel, das zeigt, wie ein Bild in PHP generiert wird, Text mit verschiedenen Farben auf dem Bild zeichnen und die Textbreite dynamisch berechnen, um die Textzentrierung zu erreichen.
<?php
// Erstellen Sie eine Leinwand,Breite300,hoch100,Hintergrund ist weiß
$width = 300;
$height = 100;
$image = imagecreatetruecolor($width, $height);
// Weißer Hintergrund
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
// Wählen Sie eine Schriftgröße aus,Umfang 1-5
$font = 5;
// 获取文本和计算Breite度
$text = "Hello, Farbenfroher Text!";
$font_width = imagefontwidth($font);
$text_width = strlen($text) * $font_width;
// Farben zuweisen - Rot
$red = imagecolorallocate($image, 255, 0, 0);
// Berechnen Sie den Textbeginn auf der Leinwandxkoordinieren,Mittelanzeige
$x = ($width - $text_width) / 2;
$y = ($height - imagefontheight($font)) / 2;
// Text ausgeben
imagestring($image, $font, $x, $y, $text, $red);
// Ausgabe Bild
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
Holen Sie sich die Breite jedes Zeichens durch ImageFontwidth ($ font) .
Multiplizieren Sie mit der Zeichenfolge Länge Strlen ($ Text), um die Gesamtbreite des Textes zu erhalten.
Verwenden Sie die Canvas -Breite, um die Textbreite abzuziehen und durch 2 zu teilen, um horizontales Zentrieren zu erreichen.
Verwenden Sie ImageColOralCocate () , um die erforderliche Farbe zuzuweisen, und hier finden Sie ein rotes Beispiel.
Zeichnen Sie den Text in bestimmten Koordinaten über Imagestring () .
Wenn Sie mehrere Textsegmente mit verschiedenen Farben zeichnen müssen, können Sie zunächst die Textbreiten jedes Segments berechnen und diese nacheinander zeichnen.
Mit der Funktion imageFontHeight () kann vertikales Zentrieren erreicht werden.
Für komplexen Text wird empfohlen, ImagettFtext () in Kombination mit TrueType -Schriftart zu verwenden, aber imagettFbBox () erforderlich ist, um die Breite zu berechnen.
Durch diese Methode kann die Funktion der dynamischen Berechnung der Textbreite und des Zeichnens von Farbtext in der PHP -Bildverarbeitung leicht zu realisieren sein, was das genaue Layout beim Erstellen von Bildern mit Text erleichtert.