Position actuelle: Accueil> Derniers articles> Utilisez ImageFontWidth () pour combiner l'animation des personnages de rendu de boucle

Utilisez ImageFontWidth () pour combiner l'animation des personnages de rendu de boucle

M66 2025-06-05

Faire des effets d'animation de caractère dans PHP n'est pas aussi intuitif que l'utilisation de JavaScript ou CSS, mais avec certaines fonctions de la bibliothèque GD, telles que ImageFontWidth () , nous pouvons toujours obtenir des effets de caractère dynamiques intéressants. Cet article expliquera comment utiliser la fonction ImageFontWidth () pour combiner une boucle pour générer une séquence de trame de "animation" des caractères, et la publier enfin dans un effet dynamique qui simule l'animation.

1. Comprendre ImageFontWidth ()

ImageFontWidth () est une fonction de la bibliothèque PHP GD utilisée pour obtenir la largeur de police spécifiée. Son objectif est de retourner la largeur de la police dans les pixels utilisés par les fonctions ImageString () et ImageString () . Cette fonction nous convient particulièrement pour contrôler la position exacte des caractères sur l'image.

 $font = 5;
$charWidth = imagefontwidth($font);

Dans cet exemple, nous définissons la police sur 5 et utilisons ImageFontWidth () pour obtenir la largeur de chaque caractère.

2. Conception de la logique d'animation

Construisons un effet d'animation simple: un personnage se déplace de gauche à droite. Chaque trame est une image et la position des caractères est déterminée par le numéro de trame. Utilisez ImageFontWidth () pour calculer avec précision le décalage horizontal des caractères dans une image.

3. Exemple de code pour générer des séquences de trame

 <?php
$font = 5;
$char = '*';
$frameCount = 20;
$imageWidth = 200;
$imageHeight = 40;
$charWidth = imagefontwidth($font);

// Générer dynamiquement plusieurs images
for ($frame = 0; $frame < $frameCount; $frame++) {
    $im = imagecreate($imageWidth, $imageHeight);
    $bgColor = imagecolorallocate($im, 255, 255, 255);
    $textColor = imagecolorallocate($im, 0, 0, 0);
    
    // Calculer les caractères x coordonner
    $x = ($charWidth * $frame) % $imageWidth;
    $y = ($imageHeight - imagefontheight($font)) / 2;
    
    imagestring($im, $font, $x, $y, $char, $textColor);

    // Enregistrer le cadre en tant que PNG document
    $filename = "frame_$frame.png";
    imagepng($im, $filename);
    imagedestroy($im);
}
?>

Le code ci-dessus générera 20 images PNG une fois le script exécuté, et les * caractères de chaque image sont déplacés d'une largeur de caractère vers la droite que le précédent.

4. Intégrer les cadres dans l'animation

Bien que PHP lui-même ne puisse pas générer directement des animations GIF, nous pouvons utiliser des outils externes tels que ImageMagick pour synthétiser ces cadres en animations GIF:

 convert -delay 10 -loop 0 frame_*.png animation.gif

Ou utilisez des outils en ligne, tels que la visite de https://m66.net/tool/gifmaker pour télécharger ces cadres d'images pour synthétiser les animations.

5. Avancé: mouvement inversé et circulation

Pour implémenter le mouvement des caractères dans les deux sens, vous pouvez cartographier $ frame à une séquence "aller-retour", par exemple:

 $step = $frame % ($frameCount * 2);
$offset = $step < $frameCount ? $step : (2 * $frameCount - $step - 1);
$x = ($charWidth * $offset) % $imageWidth;

De cette façon, les personnages se déplaceront dans l'image, améliorant davantage le plaisir de l'animation.

Résumer