Bei der PHP -Bildverarbeitung ist es häufig notwendig, Text auf das Bild zu zeichnen und sicherzustellen, dass der Text die Grenzen des Bildes nicht überschreitet. In diesem Artikel wird vorgestellt, wie die Funktion imageFontwidth () und die Funktion von ImagesX () verwendet werden, um festzustellen, ob die Textbreite den Bildbereich überschreitet, um die vollständige Anzeige des Textes sicherzustellen.
ImageFontwidth ($ font)
Diese Funktion gibt die Breite (Einheiten: Pixel) eines einzelnen Zeichens in der angegebenen integrierten Schrift ( $ font ) zurück. Es gibt fünf eingebaute Schriftarten für PHP und je größer die Zahl, desto größer die Schriftart.
ImagesX ($ Image)
Gibt die Bildbreite zurück (Einheiten: Pixel).
Ruft die Bildbreite ( ImagesX () ) ab.
Erholt die Breite jedes Zeichens ( ImageFontwidth () ).
Berechnen Sie die Breite, die durch den gesamten Absatz von Text = Anzahl der Zeichen × Breite jedes Zeichens besetzt ist.
Bestimmen Sie, ob die Textbreite die Bildbreite überschreitet.
<?php
// Eine Breite von erstellen200px,Größe ist50pxLeeres Bild
$image = imagecreate(200, 50);
// Hintergrundfarben setzen(Weiß)
$bgColor = imagecolorallocate($image, 255, 255, 255);
// Textfarbe festlegen(Schwarz)
$textColor = imagecolorallocate($image, 0, 0, 0);
// Charakterinhalt
$text = "Hello, world!";
// Wählen Sie integrierte Schriftarten,Umfang1-5
$font = 3;
// Berechnen Sie die Bildbreite
$imageWidth = imagesx($image);
// Berechnen Sie die Breite der einzelnen Zeichen
$charWidth = imagefontwidth($font);
// Berechnen Sie die Gesamttextbreite
$textWidth = strlen($text) * $charWidth;
// Bestimmen Sie, ob der Text die Bildbreite überschreitet
if ($textWidth > $imageWidth) {
echo "文字宽度超出图像Umfang!";
} else {
echo "文字宽度在图像Umfang内,Kann normal angezeigt werden。";
// Text auf Bild zeichnen,Mittelanzeige
$x = ($imageWidth - $textWidth) / 2;
$y = (imagesy($image) - imagefontheight($font)) / 2;
imagestring($image, $font, $x, $y, $text, $textColor);
// Ausgabebild
header("Content-Type: image/png");
imagepng($image);
}
// Bildressourcen freigeben
imagedestroy($image);
?>
Im Code gibt ImageFontwidth ($ font) die Breite eines einzelnen Zeichens zurück, multipliziert mit der Länge der Zeichenfolge, um die gesamte Textbreite zu erhalten.
Wenn Sie die Breite des Bildes durch ImagesX ($ image) erhalten, können Sie beurteilen, ob der Text den Bildbereich überschreitet, indem Sie die beiden vergleichen.
Wenn der Text zu lang ist, können Sie in Betracht ziehen, die Schriftgröße zu reduzieren oder den Text abzuschneiden oder die Bildbreite anzupassen.
Die Funktion imagestring () im Beispiel wird verwendet, um Text auf ein Bild zu zeichnen. Die Koordinaten von $ x und $ y in den Parametern sollen horizontal und vertikal zentriert werden.
Durch Kombination von ImageFontwidth () und ImagesX () -Funktionen können wir leicht feststellen, ob die Textbreite für das aktuelle Bild geeignet ist, wodurch einzugeschnitten oder angezeigt wird. Dies ist sehr praktisch, um Bilder mit Text dynamisch zu generieren, z. B. Überprüfungscodes, Poster usw.