Lors du traitement des images en PHP, il est souvent nécessaire de dessiner du texte sur l'image et il est souhaité contrôler avec précision la position et la couleur du texte. Cet article se concentrera sur la façon d'utiliser la fonction ImageFontWidth () combinée à ImageColorAllocate () pour réaliser l'effet de la sortie du texte de la couleur et du calcul de la largeur du texte, afin que nous puissions réaliser une disposition plus précise pendant le traitement d'image.
ImageFontWidth (int $ font): int
Cette fonction renvoie la largeur du caractère de la police intégrée spécifiée, dans Pixels. Les numéros de police intégrés PHP varient de 1 à 5, et différentes tailles de police correspondent à différentes largeurs.
ImageColorAllocate (Resource $ Image, int $ Red, int $ vert, int $ bleu): int
Attribuez une couleur à la ressource d'image et la valeur de couleur est spécifiée avec trois paramètres RVB. Renvoie l'identifiant de la couleur, utilisé pour les dessins ultérieurs.
Lorsque vous dessinez du texte, vous avez généralement besoin de connaître la largeur occupée par le texte afin de centrer, d'aligner ou de se casser. Étant donné que la largeur de police dessinée par la fonction ImageString () est fixe, la largeur de chaque caractère peut être obtenue par imageFontWidth () , puis multipliée par la longueur de la chaîne pour obtenir la largeur du texte entier.
Voici un exemple simple montrant comment générer une image en PHP, dessiner du texte de différentes couleurs sur l'image et calculer dynamiquement la largeur du texte pour atteindre le centrage de texte.
<?php
// Créer une toile,Largeur300,haut100,Le fond est blanc
$width = 300;
$height = 100;
$image = imagecreatetruecolor($width, $height);
// Fond blanc
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
// Sélectionnez une taille de police,portée 1-5
$font = 5;
// 获取文本和计算Largeur度
$text = "Hello, Texte coloré!";
$font_width = imagefontwidth($font);
$text_width = strlen($text) * $font_width;
// Attribuer des couleurs - rouge
$red = imagecolorallocate($image, 255, 0, 0);
// Calculez le début du texte sur la toilexcoordonner,Affichage central
$x = ($width - $text_width) / 2;
$y = ($height - imagefontheight($font)) / 2;
// Texte de sortie
imagestring($image, $font, $x, $y, $text, $red);
// Image de sortie
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
Obtenez la largeur de chaque caractère par imagefontwidth ($ FONT) .
Multipliez par la longueur de chaîne strlen ($ text) pour obtenir la largeur totale du texte.
Utilisez la largeur du canevas pour soustraire la largeur du texte et divisez-la par 2 pour atteindre le centrage horizontal.
Utilisez ImageColorAllocate () pour attribuer la couleur requise, et voici un exemple rouge.
Dessinez du texte dans des coordonnées spécifiées via ImageString () .
Si vous devez dessiner plusieurs segments de texte de différentes couleurs, vous pouvez d'abord calculer les largeurs de texte de chaque segment et les dessiner à tour de rôle.
En utilisant la fonction ImageFontheight () , un centrage vertical peut être obtenu.
Pour le texte complexe, il est recommandé d'utiliser ImageTtFText () en combinaison avec TrueType Font, mais ImageTtFBBox () est nécessaire pour calculer la largeur.
Grâce à cette méthode, la fonction de calcul de la largeur de texte et de texte de dessin dynamiquement dans le traitement d'image PHP peut être facilement réalisée, ce qui facilite la disposition précise lors de la génération d'images avec du texte.