Position actuelle: Accueil> Derniers articles> Combiné avec imagesx () pour déterminer si le texte dépasse la plage d'image

Combiné avec imagesx () pour déterminer si le texte dépasse la plage d'image

M66 2025-06-03

Dans le traitement de l'image PHP, il est souvent nécessaire de dessiner du texte sur l'image et de s'assurer que le texte ne dépasse pas les limites de l'image est une partie très importante. Cet article présentera comment utiliser la fonction ImageFontWidth () et la fonction imagesx () pour déterminer si la largeur du texte dépasse la plage de l'image, afin d'assurer l'affichage complet du texte.


1. Fonction Introduction

  • ImageFontWidth ($ FONT)
    Cette fonction renvoie la largeur (unités: pixels) d'un seul caractère dans la police intégrée spécifiée ( $ FONT ). Il y a cinq polices intégrées pour PHP, et plus le nombre est grand, plus la police est grande.

  • imagesx ($ image)
    Renvoie la largeur de l'image (unités: pixels).


2. Idées de mise en œuvre

  1. Obtient la largeur de l'image ( imagesx () ).

  2. Obtient la largeur de chaque caractère ( imageFontWidth () ).

  3. Calculez la largeur occupée par l'ensemble du paragraphe de texte = nombre de caractères × largeur de chaque caractère.

  4. Déterminez si la largeur du texte dépasse la largeur d'image.


3. Exemple de code

 <?php
// Créer une largeur de200px,La hauteur est50pxImage blanche
$image = imagecreate(200, 50);

// Définir les couleurs d&#39;arrière-plan(Blanc)
$bgColor = imagecolorallocate($image, 255, 255, 255);

// Définir la couleur du texte(noir)
$textColor = imagecolorallocate($image, 0, 0, 0);

// Contenu du caractère
$text = "Hello, world!";

// Sélectionnez les polices intégrées,portée1-5
$font = 3;

// Calculer la largeur de l&#39;image
$imageWidth = imagesx($image);

// Calculer la largeur de caractère unique
$charWidth = imagefontwidth($font);

// Calculez la largeur du texte total
$textWidth = strlen($text) * $charWidth;

// Déterminer si le texte dépasse la largeur de l&#39;image
if ($textWidth > $imageWidth) {
    echo "文字宽度超出图像portée!";
} else {
    echo "文字宽度在图像portée内,Peut afficher normalement。";
    // Dessiner du texte sur l&#39;image,Affichage central
    $x = ($imageWidth - $textWidth) / 2;
    $y = (imagesy($image) - imagefontheight($font)) / 2;
    imagestring($image, $font, $x, $y, $text, $textColor);
    
    // Image de sortie
    header("Content-Type: image/png");
    imagepng($image);
}

// Libérez des ressources d&#39;image
imagedestroy($image);
?>

4. Description

  • Dans le code, ImageFontWidth ($ FONT) renvoie la largeur d'un seul caractère, multiplié par la longueur de la chaîne pour obtenir la largeur du texte globale.

  • En obtenant la largeur de l'image par imagesx ($ image) , vous pouvez juger si le texte dépassera la plage d'images en comparant les deux.

  • Si le texte est trop long, vous pouvez envisager de réduire la taille de la police ou de tronquer le texte, ou d'ajuster la largeur de l'image.

  • La fonction ImageString () dans l'exemple est utilisée pour dessiner du texte sur une image. Les coordonnées $ x et $ y dans les paramètres sont pour permettre au texte d'être centré horizontalement et verticalement.


5. Conclusion

En combinant des fonctions ImageFontWidth () et ImagesX () , nous pouvons facilement déterminer si la largeur du texte convient à l'image actuelle, évitant ainsi que le texte soit raccourci ou affiché des exceptions. Ceci est très pratique pour générer dynamiquement des images avec du texte, telles que des codes de vérification, des affiches, etc.