Aktueller Standort: Startseite> Neueste Artikel> Wie passen Sie das Textlayout und die Ausrichtung mithilfe von ImageFontwidth () an, wenn Sie die Funktion von ImageStringUp () verwenden?

Wie passen Sie das Textlayout und die Ausrichtung mithilfe von ImageFontwidth () an, wenn Sie die Funktion von ImageStringUp () verwenden?

M66 2025-06-15

In PHP wird die ImageStringUp () -Funktion verwendet, um Saiten vertikal auf einem Bild zu zeichnen. Es ähnelt dem Imagestring () , aber der gezogene Text ist vertikal nach oben, was bei der Erzeugung von Bildern mit einem rotierenden Texteffekt sehr praktisch ist. Wenn Sie jedoch Text direkt mit ImageStringUp () zeichnen, erfordert das Layout und die Ausrichtung des Textes häufig eine manuelle Steuerung des Entwicklers. Zu diesem Zeitpunkt kann die ImageFontwidth () -Funktion nützlich sein, um die Zeichenbreite genau zu berechnen, wodurch das Layout und die Ausrichtung des Textes besser angepasst werden.

Einführung in grundlegende Konzepte

  • ImagestringUp ()
    Die Syntax wird wie folgt wie folgt verwendet:

     bool imagestringup(resource $image, int $font, int $x, int $y, string $string, int $color);
    

    Unter ihnen ist $ font die integrierte Schriftgröße (1 ~ 5), $ x, $ y die Startkoordinate, $ String ist der Textinhalt und $ Color ist die Farbressource.

  • ImageFontwidth ()
    Gibt die Zeichenbreite der angegebenen integrierten Schriftgröße zurück. Die Syntax ist wie folgt:

     int imagefontwidth(int $font);
    

Durch die Verwendung dieser beiden Funktionen kann die Position des Textes beim Zeichnen steuern und überlappende Text oder unregelmäßiges Layout vermeiden.

Warum muss ich ImageFontwidth () verwenden, um das Textlayout anzupassen?

Da ImagestringUp () Text vertikal zeichnet, wird der horizontale Abstand jedes Zeichens festgelegt. Wenn jedoch die Zeichenbreite nicht berechnet wird und die Koordinatenzeichnung direkt angegeben ist, kann der Text von der erwarteten Position abweichen, insbesondere wenn mehrere Zeilen gezogen oder zentriertes Ausrichten erforderlich sind. Daher ist es notwendig, zuerst die Zeichenbreite der Schriftart durch ImageFontwidth () zu erhalten, die Zeichnungsposition jedes Zeichens zu berechnen und das vernünftige Textlayout sicherzustellen.

Praktisches Beispiel: Implementieren Sie die horizontale Zentrierung der Ausrichtung des vertikalen Textes

Angenommen, wir möchten eine Reihe von String vertikal in einem Bild mit einer Breite von 200 Pixel zeichnen und eine horizontale Zentrierausrichtung erreichen:

 <?php
// Erstellen Sie ein leeres Bild
$width = 200;
$height = 100;
$image = imagecreatetruecolor($width, $height);

// Farben zuweisen
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);

// Hintergrundfarbe füllen
imagefill($image, 0, 0, $white);

$text = "Hello";
$font = 5;  // Eingebaute Schriftgröße 1~5

// Berechnen Sie die Textbreite
$fontWidth = imagefontwidth($font);
$textWidth = strlen($text) * $fontWidth;

// Berechnung beginnen x koordinieren,Die Mittelstufe erreichen
$x = ($width - $textWidth) / 2;

// y koordinieren从底部开始向上绘制
$y = 80;

// verwenden imagestringup() Vertikalen Text zeichnen
imagestringup($image, $font, $x, $y, $text, $black);

// Ausgabebild
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>

veranschaulichen:

  • Holen Sie sich die Breite jedes Zeichens der Schrift mit Bildfontwidth ($ font) .

  • Multiplizieren Sie mit der Länge der Zeichenfolge, um die gesamte Textbreite zu erhalten.

  • Subtrahieren Sie die Textbreite durch die Bildbreite und teilen Sie sie durch 2 auf, um horizontal die Textzentrierung zu erreichen.

  • In den Koordinaten von ImagestringUp () ist x die linke Kante des Textes, und Y ist die vertikale Koordinate der Grundlinie am Ende des Textes.

Fortgeschrittene: Zentrierte Ausrichtung des multi-line-vertikalen Textes erkennen

Wenn Sie mehrere Zeilen vertikaler Text zeichnen müssen, z. B. das Zeichnen mehrerer Textsegmente von links nach rechts, und jedes Segment vertikal angezeigt wird, können wir auch ImageFontwidth () verwenden, um die Breite jedes Segments zu berechnen und die X -Koordinaten dynamisch anzupassen:

 <?php
$width = 300;
$height = 150;
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $white);

$font = 4;
$texts = ["PHP", "Imagestringup", "Example"];

// Berechnen Sie die Gesamtbreite
$fontWidth = imagefontwidth($font);
$totalWidth = 0;
foreach ($texts as $t) {
    $totalWidth += strlen($t) * $fontWidth + 10; // Jedes Intervall10Pixel
}
$totalWidth -= 10; // Der letzte ist nicht verteilt

// Start x koordinieren居中
$x = ($width - $totalWidth) / 2;
$y = 130;

foreach ($texts as $t) {
    imagestringup($image, $font, $x, $y, $t, $black);
    $x += strlen($t) * $fontWidth + 10;
}

header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>

Dies ermöglicht eine flexible Kontrolle über die Anordnung und Ausrichtung mehrerer vertikaler Texte.