Aktueller Standort: Startseite> Neueste Artikel> Wie verwendet ich die Kombination von ImageFontwidth () und imageCopy () -Funktionen, um den Effekt der Erstellung von Textkarten in PHP zu erreichen?

Wie verwendet ich die Kombination von ImageFontwidth () und imageCopy () -Funktionen, um den Effekt der Erstellung von Textkarten in PHP zu erreichen?

M66 2025-06-15

In PHP bietet die häufig verwendete GD -Bibliothek eine Fülle von Funktionen, die uns helfen können, Bilder dynamisch zu generieren. Dieser Artikel konzentriert sich darauf, wie die Kombination von ImageFontwidth () und imageCopy () -Funktionen verwendet wird, um Textkarte -Effekte zu erzielen. Die sogenannte Textkarte besteht darin, den Text in kleine Stücke oder Karten zu "schneiden" und ihn dann auf das Zielbild zu spleißen, um eine flexiblere Form des Textausdrucks zu erreichen.


1. Funktion Einführung

  • ImageFontwidth (int $ font): int
    Gibt die eingebaute Schriftzeichenbreite zurück, $ font ist die Schriftgrößenidentifikation mit den Werten 1-5. Diese Funktion ist nützlich, um die Breite des Textes zu bestimmen und die Berechnung der Spleißposition zu erleichtern.

  • ImageCopy (Ressource $ DST_IM, Ressource $ src_im, int $ dst_x, int $ dst_y, int $ src_x, int $ src_y, int $ src_y, int $ src_w, int $ src_h): bool
    Kopieren Sie einen Bereich im Quellbild in die angegebene Position des Zielbildes. Kann verwendet werden, um einzelne Zeichen zu kopieren und einzufügen oder Textteile zu schneiden.


2. Ideen zum Erstellen von Textaufklebern

  1. Bereiten Sie das Quellbild vor, das den erforderlichen Text enthält (normalerweise ist der Text in einem kleinen Bild geschrieben).

  2. Nach der Schriftbreite und der Anzahl der Zeichen werden Zeichen-für-Charakter-Stücke aus dem Quellbild entnommen.

  3. Kopieren Sie die Zeichenblöcke in die angegebene Position des Zielbildes nacheinander durch die Funktion "ImageCopy () .

  4. Passen Sie die Positionsparameter an, um einen kohärenten Textkarteneffekt zu erzielen.


3. Demonstration von Beispielcode

 <?php
// Erstellen Sie ein Zielbild(Weißer Hintergrund)
$dst_width = 300;
$dst_height = 50;
$dst_im = imagecreatetruecolor($dst_width, $dst_height);
$white = imagecolorallocate($dst_im, 255, 255, 255);
imagefill($dst_im, 0, 0, $white);

// Quellkarte,Angenommen, es ist Text"HELLO"Postings,Die Breite und Höhe sind die Breite jedes Zeichens*Charakterzahl und Charakterhöhe
// Bei der Verwendung müssen Sie eine Bildressource mit vollständigem Text vorbereiten.
$src_im = imagecreatefrompng('http://m66.net/images/letters.png');

// Stellen Sie die Schriftgröße ein(Eingebaute Schriftarten,1-5)
$font = 5;
$char_width = imagefontwidth($font);
$char_height = imagefontheight($font);

// Text zu posten
$text = "HELLO";
$len = strlen($text);

// Berechnen Sie die Ausgangsposition des Textes,Zentrieren Sie den Text
$start_x = ($dst_width - $char_width * $len) / 2;
$start_y = ($dst_height - $char_height) / 2;

// Charakter-für-Charakter-Kopie
for ($i = 0; $i < $len; $i++) {
    $char = $text[$i];
    // ASCIIOffset,假设Quellkarte文字排列是从'A'Anfangen, kontinuierlich zu arrangieren
    $offset = ord($char) - ord('A');
    $src_x = $offset * $char_width;
    $src_y = 0;

    // Kopieren Sie ein einzelnes Zeichen in das Zieldiagramm
    imagecopy(
        $dst_im, 
        $src_im, 
        $start_x + $i * $char_width, 
        $start_y, 
        $src_x, 
        $src_y, 
        $char_width, 
        $char_height
    );
}

// Ausgabe Bild
header('Content-Type: image/png');
imagepng($dst_im);

// Ressourcen frei machen
imagedestroy($dst_im);
imagedestroy($src_im);
?>

4. Erklärung und Expansion

  • In diesem Beispiel geht davon aus, dass das Textmaterialdiagramm ( Buchstaben.png ) ein Bild mit horizontal angeordneten Buchstaben mit der Breite eines einzelnen Zeichens ist, multipliziert mit der Anzahl der Zeichen und der Höhe der Schrifthöhe.

  • ImageFontwidth () und ImageFontHeight () helfen uns, die Breite und die Höhe der Zeichen genau zu erhalten, wodurch es einfacher ist, wörtlich zu kopieren.

  • Wenn der Textinhalt komplex ist, können Sie auch ImagettFtext () verwenden, um die Schriftart vor dem Verarbeitung zu rendern oder imageCopyresampled () zu erreichen, um eine Skalierung zu erreichen.

  • Mit dieser Methode können Sie interessante Textanimationseffekte, Aufkleber im Brieffragmentstil und sogar benutzerdefinierte Wasserzeichen erstellen.