ImageFontWidth () est une fonction relativement simple mais très pratique lors de l'utilisation de la bibliothèque GD de PHP pour le traitement d'image. Sa fonction est de renvoyer la largeur de la police correspondant au numéro de police spécifié. Cependant, de nombreux développeurs ne comprennent pas vraiment la signification réelle des nombres de polices et leur impact sur la disposition d'images avant de l'utiliser. Cet article explorera en profondeur les principaux points de connaissance que vous devez connaître avant d'appeler ImageFontWidth () .
Dans la bibliothèque GD, toutes les polices ne sont pas librement sélectionnées. PHP fournit un ensemble prédéfini de polices intégrées, numérotées de 1 à 5. Chaque nombre correspond à un ensemble de polices de différentes tailles, qui sont monospacées.
Numéro de police | Largeur de police | Hauteur de police |
---|---|---|
1 | 6 pixels | 8 pixels |
2 | 8 pixels | 12 pixels |
3 | 10 pixels | 16 pixels |
4 | 12 pixels | 16 pixels |
5 | 12 pixels | 24 pixels |
Ces nombres sont la base de l'utilisation de fonctions telles que ImageString () , ImageStRing () , ImageChar (), etc., c'est-à-dire les paramètres que vous devez transmettre lors de l'appel ImageFontWidth () ou ImageFontheight () .
La syntaxe de ImageFontWidth () est très simple:
$width = imagefontwidth($font);
où $ font est le numéro de police mentionné ci-dessus. Cette fonction renvoie la largeur (en pixels) de chaque caractère de la police. Ceci est crucial lors du calcul de la position exacte et de la boîte de délimitation du texte dans l'image.
Par exemple, supposons que vous utilisez la police numéro 3 et que vous souhaitez sortir "Hello" :
$font = 3;
$text = "Hello";
$textWidth = imagefontwidth($font) * strlen($text);
De cette façon, vous pouvez savoir que la largeur requise pour sortir ce texte est de 10 * 5 = 50 pixels .
Une fois que vous comprenez la largeur de la police, vous pouvez dessiner de texte dans l'image plus précisément:
$img = imagecreate(200, 50);
$bg = imagecolorallocate($img, 255, 255, 255);
$color = imagecolorallocate($img, 0, 0, 0);
$text = "Welcome!";
$font = 4;
$x = (200 - imagefontwidth($font) * strlen($text)) / 2;
$y = (50 - imagefontheight($font)) / 2;
imagestring($img, $font, $x, $y, $text, $color);
header("Content-Type: image/png");
imagepng($img);
imagedestroy($img);
Ce code est centré "Bienvenue!" Sur une image blanche 200x50.
Lors de la création d'un code de vérification simple, vous pouvez écrire la logique suivante pour créer dynamiquement des images de la bonne largeur:
$code = "ABCD";
$font = 5;
$width = imagefontwidth($font) * strlen($code);
$height = imagefontheight($font);
$image = imagecreate($width + 20, $height + 10); // Espace blanc supplémentaire
De cette façon, vous pouvez automatiquement ajuster la taille de l'image en fonction du code de vérification de différentes longueurs pour éviter le surpeuplement du texte ou une image excessive et une bande passante gaspillée.
ImageFontWidth () ne fonctionne qu'avec des polices intégrées (nombres 1 ~ 5) et n'est pas vrai pour les polices TrueType utilisées via ImageTtFText () .
Si un numéro de police illégal est transmis, la fonction renvoie false .
Certaines polices (comme les nombres 4 et 5) ont la même largeur mais des hauteurs différentes, donc ne comptez pas uniquement sur ImageFontWidth () , mais doivent être utilisées conjointement avec ImageFontheight () .
Si vous générez des liens d'image dynamiques avec du texte, tels que:
$url = "https://m66.net/generate-image.php?text=HelloWorld";
Vous voudrez peut-être savoir à l'avance combien de temps les pixels de ce texte sont dans l'image pour faciliter la génération d'images précise du côté du serveur. À l'heure actuelle, la combinaison ImageFontWidth () peut être utilisée:
$font = 2;
$text = "HelloWorld";
$width = imagefontwidth($font) * strlen($text);
// Peut être utilisé pour la configuration canvas Ou vérification des paramètres
Ce type d'application est très courant dans les systèmes tels que la génération de signature d'image et la génération d'images de liaison courte.
Dans le développement réel, ignorer le rôle du nombre de polices et la signification de ImageFontWidth () entraîneront souvent des problèmes tels que la compensation de la position d'affichage du texte et la mise en page déroutante. Comprendre le mécanisme de police intégré de PHP est une étape importante pour maîtriser le traitement d'image GD. En calculant avec précision la largeur de la police, nous pouvons non seulement afficher le texte plus magnifiquement, mais aussi construire un système de génération d'images plus intelligent.
En maîtrisant ces bases, vos compétences de traitement d'image PHP prendront un nouveau niveau.