Position actuelle: Accueil> Derniers articles> Utilisez ImageFontWidth () et ImageString () pour implémenter un centre de texte dynamique

Utilisez ImageFontWidth () et ImageString () pour implémenter un centre de texte dynamique

M66 2025-05-28

Lorsque vous effectuez un traitement d'image, centrer dynamiquement le texte sur l'image est l'un des besoins communs. La bibliothèque GD de PHP fournit une série de fonctions pour aider les développeurs à gérer ces tâches, parmi lesquelles ImageFontWidth () et ImageString () sont deux fonctions importantes. Cet article utilisera un exemple simple pour illustrer comment utiliser ces deux fonctions pour atteindre l'affichage de centrage horizontal du texte.

1. Fonction Introduction

ImageFontWidth ()

Cette fonction renvoie la valeur des pixels de la largeur de police spécifiée. Les nombres de police sont prédéfinis par GD, de 1 à 5, plus le nombre est grand, plus la police est grande.

 int imagefontwidth(int $font);

ImageString ()

Cette fonction est utilisée pour écrire une chaîne sur une image.

 bool imagestring(GdImage $image, int $font, int $x, int $y, string $string, int $color);

Explication des paramètres:

  • $ Image : Ressource d'image

  • $ police : numéro de police (1 ~ 5)

  • $ x , $ y : la position de départ de l'écriture de texte

  • $ String : le texte à écrire

  • $ couleur : valeur d'index des couleurs

2. Étapes de mise en œuvre

Prenons une photo avec une largeur de 400 pixels et une hauteur de 100 pixels à titre d'exemple, et centrez un paragraphe de texte dans l'image.

 <?php
// Créer une toile
$width = 400;
$height = 100;
$image = imagecreate($width, $height);

// Régler la couleur
$background_color = imagecolorallocate($image, 255, 255, 255); // Fond blanc
$text_color = imagecolorallocate($image, 0, 0, 0); // Texte noir

// Texte à écrire
$text = "Bienvenue à visiter m66.net";
$font = 5;

// Calculer la largeur du texte
$text_width = imagefontwidth($font) * strlen($text);

// calculerXcoordonner,Centrer le texte
$x = ($width - $text_width) / 2;

// Ycoordonner(Position verticale)Personnalisable,Voici simplement sur le centre vertical
$y = ($height - imagefontheight($font)) / 2;

// Écrire du texte
imagestring($image, $font, $x, $y, $text, $text_color);

// Image de sortie au navigateur
header("Content-Type: image/png");
imagepng($image);

// Mémoire libre
imagedestroy($image);
?>

3. Choses à noter

  1. Limitations de la police : ImageFontWidth () s'applique uniquement aux polices intégrées utilisées par ImageString () . Si vous avez besoin d'avoir un contrôle plus granulaire sur le style et la position du texte, vous devriez considérer ImageTtFText () .

  2. Caractères multi-octets : strlen () est inexact lors du traitement chinois. Vous pouvez utiliser MB_Strlen () à la place ou estimer la largeur du caractère.

  3. Optimisation des performances : pour le contenu d'image fréquemment généré, considérez le mécanisme de cache pour éviter les opérations répétées.

4. Scénarios d'application

Cette méthode convient pour générer des codes de vérification dynamiquement, des filigranes d'image, des légendes de code QR ou une synthèse de texte d'image sur des plates-formes URL courtes personnalisées telles que https://m66.net .

Grâce à une combinaison simple de plusieurs fonctions, la fonction de centrage de texte pratique et flexible peut être obtenue, améliorant considérablement le professionnalisme de l'expérience utilisateur et de la présentation d'image.