Lorsque vous utilisez PHP pour le traitement d'image, la génération de texte dynamiquement est l'un des besoins courants, comme dans des scénarios tels que la génération de codes de vérification, les avatars des utilisateurs, les balises de graphique, etc. Cependant, pour que le texte soit correctement aligné dans une image, il est nécessaire de calculer avec précision la largeur et la hauteur du pixel. La fonction ImageFtBbox est un outil important pour accomplir cette tâche. Cet article analysera l'utilisation de cette fonction en profondeur et fournira des conseils pratiques pour vous aider à contrôler avec précision la disposition du texte dans l'image.
ImageFtBbox est une fonction de la bibliothèque GD de PHP pour calculer les boîtes de délimitation lors de la rendu du texte spécifié à l'aide de polices TrueType (TTFS). Sa valeur de retour est un tableau représentant les coordonnées de quatre coins contenant la limite du texte.
array imageftbbox ( float $size , float $angle , string $fontfile , string $text [, array $options ] )
$ Taille : taille de police.
$ Angle : l'angle du texte (dans le sens des aiguilles d'une montre).
$ FONTFILE : chemin de fichier de police.
$ text : la chaîne de texte à mesurer.
$ Options : paramètres facultatifs, tels que l'espacement des mots, etc.
ImageFtBbox renvoie un tableau contenant 8 éléments, représentant les coordonnées (x, y) des quatre coins de la boîte de délimitation, dans l'ordre comme suit:
[
0 => lower left x,
1 => lower left y,
2 => lower right x,
3 => lower right y,
4 => upper right x,
5 => upper right y,
6 => upper left x,
7 => upper left y
]
Pour calculer la largeur et la hauteur "réelles" du texte, utilisez la formule suivante:
$width = abs($bbox[2] - $bbox[0]);
$height = abs($bbox[5] - $bbox[1]);
Voici un exemple de PHP complet qui montre comment calculer la largeur et la hauteur du texte et la centrer sur l'image.
<?php
// Chemin de police(TTFFormat)
$font = __DIR__ . '/fonts/arial.ttf';
// Contenu texte
$text = "Hello Gitbox!";
// Taille et angle de police
$size = 20;
$angle = 0;
// Calculer les boîtes de délimitation
$bbox = imageftbbox($size, $angle, $font, $text);
// Calculer la largeur et la hauteur
$width = abs($bbox[2] - $bbox[0]);
$height = abs($bbox[5] - $bbox[1]);
// Créer une image
$imageWidth = $width + 20;
$imageHeight = $height + 20;
$image = imagecreatetruecolor($imageWidth, $imageHeight);
// Régler la couleur
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $white);
// Calculer et dessiner les coordonnées du point de départ,Centrer le texte
$x = ($imageWidth - $width) / 2 - $bbox[0];
$y = ($imageHeight - $height) / 2 - $bbox[5];
// Dessiner du texte
imagefttext($image, $size, $angle, $x, $y, $black, $font, $text);
// Image de sortie
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
Vous pouvez enregistrer le code ci-dessus en tant que fichier .php et y accéder via un navigateur, par exemple, déployé sous https://gitbox.net/demo/text-center.php , et vous pouvez voir que le texte est centré avec précision dans l'image.
Utilisez toujours ABS () : les coordonnées renvoyées par BBox peuvent être négatives, alors assurez-vous d'utiliser ABS () pour calculer la largeur et la hauteur.
Laissez suffisamment de marges : pour empêcher les polices d'être recadrées, il est recommandé d'ajouter des marges supplémentaires à la taille de l'image (comme +20 dans l'exemple ci-dessus).
Remarque Compatibilité des polices : assurez-vous que les chemins de police du serveur sont corrects, en particulier lorsqu'ils sont déployés sous différents systèmes d'exploitation ou environnements de conteneurs.
Traitement de texte multi-lignes : chaque ligne est calculée séparément à l'aide de l'imageftbbox , puis fusionnée et disposée.
ImageFtBbox est un outil puissant mais souvent négligé. Le maîtriser peut améliorer considérablement votre liberté et votre précision dans la typographie de l'image. Grâce au contenu ci-dessus, je pense que vous pouvez calculer avec précision la largeur et la hauteur du texte et l'appliquer de manière flexible aux projets réels. Si vous souhaitez ajouter des filigranes adaptatifs, des étiquettes ou des annotations de données à votre image, vous pourriez aussi bien vous pratiquer davantage pour que le texte et l'image se mélangent vraiment.
Avec une compréhension approfondie de l'imageftbbox , vos capacités de traitement d'image atteindront un nouveau niveau.