Position actuelle: Accueil> Derniers articles> Créer une sortie de texte colorée en conjonction avec ImageColorAllocate ()

Créer une sortie de texte colorée en conjonction avec ImageColorAllocate ()

M66 2025-05-24

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.

1. Introduction aux fonctions de base

  • 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.

2. Pourquoi utiliser ImageFontWidth () ?

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.

3. Exemple d'explication de code

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);
?>

4. Détails du code

  • 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 () .

5. Développer des idées

  • 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.