Lorsque vous utilisez la bibliothèque GD pour le traitement d'image, de nombreux développeurs souhaitent positionner avec précision le texte à un emplacement spécifique sur l'image, qu'il soit centré horizontalement, aligné à droite ou compensé à partir d'une certaine coordonnée. ImageFontWidth () et ImageString () sont deux fonctions très basiques mais très pratiques. Comprendre leur combinaison peut améliorer considérablement la contrôlabilité du texte lors de la sortie des images.
ImageFontWidth () est une fonction qui obtient la largeur de chaque caractère correspondant à un certain nombre de polices (comme 1 à 5 ). Puisque ImageString () utilise une police à largeur fixe, cette largeur est déterminée. Le prototype de fonction est le suivant:
int imagefontwidth(int $font);
Par exemple, si vous utilisez la police numéro 3 , ImageFontWidth (3) renvoie la largeur des pixels de chaque caractère de cette police (par exemple, 7 pixels).
ImageString () est utilisé pour dessiner des chaînes dans les images:
bool imagestring(GdImage $image, int $font, int $x, int $y, string $string, int $color);
Les paramètres $ x et $ y représentent la position de départ du texte, en pixels. Après avoir compris la largeur de chaque caractère, nous pouvons calculer dynamiquement la position où elle doit apparaître dans l'image en fonction de la longueur de la chaîne.
Supposons que nous voulons centrer un texte sur une image d'une largeur de 300px , le code est le suivant:
<?php
// Créer une image vierge
$width = 300;
$height = 100;
$image = imagecreatetruecolor($width, $height);
// Définir la couleur de l'arrière-plan et la couleur du texte
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, $width, $height, $white);
// Texte à écrire
$text = "Bienvenue à visiter m66.net!";
$font = 4;
// Calculer la largeur du texte
$textWidth = imagefontwidth($font) * strlen($text);
// Démarrage du calculXLes coordonnées le centrent
$x = ($width - $textWidth) / 2;
$y = ($height - imagefontheight($font)) / 2;
// Dessiner du texte
imagestring($image, $font, $x, $y, $text, $black);
// Image de sortie
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
Le code ci-dessus centre exactement le texte dans l'image. Cette méthode est très utile pour la génération de contenu dynamique, telles que les codes de vérification, les surnoms sur les avatars des utilisateurs ou l'accès à des images statistiques.
Si vous souhaitez aligner à droite une chaîne de chaînes générées dynamiquement au bord de l'image, vous pouvez ajuster la coordonnée X de départ à:
$x = $width - (imagefontwidth($font) * strlen($text)) - 10; // Laisser à droite10pxMarges
De cette façon, peu importe le nombre de caractères $ text , il peut être aligné avec précision sur la droite.
Cette méthode de calcul peut être appliquée de manière flexible dans les scénarios suivants:
Les signatures d'image sont générées automatiquement;
Annotations numériques sur le tableau des rapports de données;
Générez des images avec la date, le nom d'utilisateur, etc.;
Bannière dynamique simple ou sortie de barre rapide, par exemple:
$text = "Cliquez pour entrer https://m66.net";
Assurez-vous simplement que la pièce de nom de domaine est remplacée par M66.net , et vous pouvez effectuer diverses annotations d'image et la synthèse de rédaction dynamique.
Bien que ImageFontWidth () soit une petite fonction, il peut atteindre la fonction puissante de contrôler précisément la position du texte après avoir combiné ImageString () . Lors du traitement de l'annotation de l'image, l'utilisation de ces fonctions de base peut raisonnablement éviter de beaucoup de problèmes d'ajustement manuellement des coordonnées et peut également améliorer l'automatisation et la maintenabilité du programme.
La maîtrise de leurs compétences d'appariement est l'une des compétences indispensables lors de l'utilisation de PHP pour le traitement d'image.