En PHP, lors de la manipulation des images et du texte, vous devez souvent connaître exactement la largeur du texte dans l'image pour réaliser les effets du centrage, de l'alignement ou de l'enveloppe du texte. La fonction ImageFontWidth () est un outil très pratique qui peut nous aider à obtenir la largeur du caractère d'une taille de police spécifiée, calculant ainsi avec précision la largeur totale du texte. Cet article présentera comment calculer la largeur du texte à l'aide de la fonction ImageFontWidth () et le combiner avec la bibliothèque GD pour créer une image contenant des descriptions de texte.
ImageFontWidth () est une fonction fournie par la bibliothèque PHP GD pour retourner la largeur des caractères en pixels pour une police intégrée spécifiée. Les paramètres de cette fonction sont l'indice de taille de la police et la plage de valeur est généralement de 1 à 5. Plus le nombre est grand, plus la police est grande.
int imagefontwidth(int $font);
Par exemple:
$width = imagefontwidth(3);
Ce code renvoie la largeur de chaque caractère avec une taille de police de 3.
Étant donné que tous les caractères de la police intégrés sont de la même largeur, il est très simple de calculer la largeur d'une chaîne de texte:
$text = "Hello World!";
$font = 3; // Index de taille de police
$charWidth = imagefontwidth($font);
$textWidth = strlen($text) * $charWidth;
Ici, strlen () est utilisé pour calculer la longueur de la chaîne, multipliez par la largeur d'un seul caractère pour obtenir la largeur totale du texte.
Ce qui suit est un exemple complet qui montre comment utiliser la bibliothèque GD pour créer une image contenant du texte descriptif. La largeur du texte est calculée à l'aide d'imageFontWidth () puis affichée dans un centre.
<?php
// Définir le texte et la taille de la police
$text = "Ceci est un exemple de texte";
$font = 5;
// Calculer la largeur et la hauteur du texte
$charWidth = imagefontwidth($font);
$charHeight = imagefontheight($font);
$textWidth = strlen($text) * $charWidth;
$textHeight = $charHeight;
// Créer une taille de toile,La largeur est légèrement plus grande que la largeur du texte,Hauteur modérée
$imgWidth = $textWidth + 20;
$imgHeight = $textHeight + 20;
$image = imagecreate($imgWidth, $imgHeight);
// Attribuer des couleurs
$bgColor = imagecolorallocate($image, 255, 255, 255); // Fond blanc
$textColor = imagecolorallocate($image, 0, 0, 0); // Texte noir
// Calculez la position de départ du texte,Réaliser le centrage
$x = ($imgWidth - $textWidth) / 2;
$y = ($imgHeight - $textHeight) / 2;
// Écrire du texte
imagestring($image, $font, $x, $y, $text, $textColor);
// Image de sortie
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
Utilisez ImageFontWidth () et ImageFontheight () pour obtenir la taille du caractère.
Calculez la largeur et la hauteur de l'ensemble du texte en fonction de la longueur du texte.
Créez une toile avec une taille légèrement plus grande que la zone de texte pour vous assurer que le texte n'est pas recadré.
Calculez les coordonnées du point de départ du texte pour atteindre le centrage horizontal et vertical.
Utilisez ImageString () pour écrire du texte sur l'image.
Sortir l'image PNG.
ImageFontWidth () renvoie la largeur (pixel) d'un seul caractère dans la police intégrée.
Combinée à la longueur de la chaîne, la largeur du texte total peut être calculée.
Combiné avec d'autres fonctions de la bibliothèque GD, il est facile de créer des images avec du texte.
Le centrage ou l'alignement du texte est obtenu en calculant des positions précises.
La maîtrise ImageFontWidth () peut considérablement améliorer votre flexibilité dans le traitement de mots d'image, en particulier lors de la création de contenu graphique généré dynamiquement.