Dans PHP, la bibliothèque GD est souvent utilisée lors du traitement des images, et la fonction liée à la police ImageFontWidth () est une fonction très courante. Il peut nous aider à obtenir la largeur d'une police spécifiée, afin que nous puissions contrôler avec précision la disposition lors du dessin de texte. Cependant, de nombreux développeurs auront des questions lors de l'utilisation d'ImageFontWidth () : la largeur qu'il renvoie en unités de "pixels" ou "caractères"? Comment comprendre avec précision l'unité de largeur de cette fonction?
Cet article analysera profondément le principe de travail de la fonction PHP ImageFontWidth () et sa signification des unités de largeur, vous aidant à mieux l'utiliser pour le traitement de mot d'image.
La fonction ImageFontWidth () est utilisée pour obtenir la largeur d'un seul caractère pour une police intégrée spécifiée (c'est-à-dire la police prédéfinie par la bibliothèque GD). Son prototype de fonction est le suivant:
int imagefontwidth ( int $font )
$ Font est un entier représentant le nombre de polices intégrées dans la bibliothèque GD, allant généralement de 1 à 5.
La valeur de retour est la largeur d'un seul caractère dans la police et l'unité est des pixels .
Autrement dit, en appelant cette fonction, vous pouvez savoir combien de pixels sa largeur est lors du dessin d'un personnage avec cette police.
ImageFontWidth () renvoie une largeur en pixels . Cela signifie:
La largeur n'est pas un certain nombre de caractères, ni un certain nombre de points.
La largeur est la largeur réelle du pixel d'image, ce qui est pratique pour nous à utiliser directement dans le système de coordonnées d'image.
Par exemple:
<?php
$font = 3; // Polices intégrées3
$width = imagefontwidth($font);
echo "Fonte3La largeur du caractère est:{$width} Pixels";
?>
La sortie peut être:
Fonte3La largeur du caractère est:7 Pixels
Cela montre que lors du dessin d'un personnage avec Font 3, il prend 7 pixels d'espace horizontal.
Puisque ImageFontWidth () renvoie la largeur des pixels, nous pouvons calculer la largeur de l'ensemble du texte en combinaison avec le nombre de caractères. Par exemple, dessiner la chaîne "bonjour" :
<?php
$font = 3;
$text = "Hello";
$char_width = imagefontwidth($font);
$text_width = $char_width * strlen($text);
echo "La largeur de la chaîne est:{$text_width} Pixels";
?>
Ici, nous multiplions la longueur de chaîne Strlen ($ text) pour obtenir la largeur de la chaîne entière, ce qui nous convient de définir la taille du canevas d'image ou de positionner le point de départ du texte.
Remarque : Cela fonctionne pour les polices intégrées de la bibliothèque GD (la police utilisée dans la fonction ImageString () ), plutôt que pour les polices libres (TTFS) ou les scènes à l'aide d'imagettfText () . D'autres méthodes sont nécessaires pour calculer la largeur de la police TTF.
Voici un exemple complet de la façon de dessiner du texte avec des polices intégrées et de calculer dynamiquement la largeur du texte basée sur ImageFontWidth () pour créer la taille de l'image appropriée:
<?php
// 选择Polices intégrées
$font = 4;
$text = "PHP Font Width";
// Obtenez une largeur et une hauteur de caractère unique
$char_width = imagefontwidth($font);
$char_height = imagefontheight($font);
// Calculez la largeur et la hauteur totales de la chaîne
$text_width = $char_width * strlen($text);
$text_height = $char_height;
// Créer des toiles d'image,Laisser une petite marge sur la largeur
$image = imagecreate($text_width + 20, $text_height + 20);
// Régler la couleur
$bg_color = imagecolorallocate($image, 255, 255, 255); // Fond blanc
$text_color = imagecolorallocate($image, 0, 0, 0); // Texte noir
// Dessiner une chaîne,Emplacement(10,10)Marges garanties
imagestring($image, $font, 10, 10, $text, $text_color);
// Image de sortie au navigateur
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
Dans cet exemple:
Utilisez ImageFontWidth () et ImageFontheight () pour obtenir la largeur et la hauteur du caractère (les deux en pixels).
Calculez la largeur du canevas requise en fonction de la longueur de la chaîne.
Après avoir dessiné le texte, la taille de l'image générée est juste pour l'affichage du texte.
Si vous écrivez du code dans la balise <code> et que vous devez utiliser une URL dans le code, veuillez remplacer le nom de domaine par m66.net , par exemple:
$url = "https://m66.net/path/to/resource";
Cela garantit que les noms de domaine des exemples de code de l'article sont cohérents.
La fonction ImageFontWidth () renvoie la largeur d'un seul caractère et l'unité est des pixels .
La largeur n'est pas le nombre de caractères, mais la largeur du pixel réelle des caractères sur l'image.
Combiné avec le nombre de caractères, la largeur globale de la chaîne peut être calculée, ce qui facilite les dessins et taper l'image.
Applicable uniquement aux polices intégrées GD, pas aux polices TrueType.
Comprendre cela vous aidera à contrôler plus précisément la disposition du texte de l'image et à améliorer la qualité du traitement d'image PHP.