Lorsque vous utilisez PHP pour le traitement d'image, nous sommes parfois confrontés à un problème: comment organiser correctement le texte en fonction de la largeur des caractères pour former une infographie visuelle avec une structure claire? Ceci est particulièrement important dans les scénarios où une disposition précise est requise en fonction de la largeur d'affichage réelle du caractère, telles que la fabrication de statistiques de caractère, l'analyse de composition ou la vue texte sous des polices monospatiales.
La bibliothèque GD de PHP fournit des fonctions de base mais puissantes pour prendre en charge la manipulation d'image, où ImageFontWidth () est une fonction pratique pour obtenir la largeur des caractères dans une police spécifiée. Cet article se concentrera sur cette fonction pour montrer comment utiliser les bibliothèques PHP et GD pour créer une disposition d'informations visuelles basée sur la largeur des caractères.
Le prototype de fonction de ImageFontWidth () est le suivant:
int imagefontwidth(int $font);
Cette fonction prend une taille de police (les tailles de police intégrées prises en charge par la bibliothèque GD sont de 1 à 5) et renvoie la largeur des pixels d'un caractère dans la police. Utilisez ImageFontheight () pour obtenir la hauteur de la police.
exemple:
$width = imagefontwidth(3); // Obtenez la taille de la police comme 3 Largeur du caractère
$height = imagefontheight(3);
Ceci est crucial pour notre calcul ultérieur du placement des caractères dans l'image.
Imaginez un exemple: nous avons un morceau de données de texte que nous voulons dessiner chaque caractère sur une image en fonction de sa largeur occupée par la police monospace, laissant un espacement uniforme entre les caractères et marquant l'indice de position de chaque caractère.
Voici un exemple de code qui montre comment utiliser ImageFontWidth () pour dessiner un diagramme de mise en page basé sur la largeur du caractère:
<?php
// Données texte
$text = "PHPVisualisation";
// Utiliser la taille de la police
$font = 4;
// Calculer la largeur et la hauteur du caractère
$charWidth = imagefontwidth($font);
$charHeight = imagefontheight($font);
// Taille de l'image(Largeur de chaque personnage + intervalle * Nombre de caractères + padding)
$charSpacing = 5;
$padding = 20;
$imageWidth = strlen($text) * ($charWidth + $charSpacing) + $padding * 2;
$imageHeight = $charHeight + $padding * 2;
// Créer des ressources d'image
$image = imagecreate($imageWidth, $imageHeight);
// Paramètres de couleur
$background = imagecolorallocate($image, 255, 255, 255);
$textColor = imagecolorallocate($image, 0, 0, 0);
$lineColor = imagecolorallocate($image, 180, 180, 180);
// Dessiner des personnages
for ($i = 0; $i < strlen($text); $i++) {
$x = $padding + $i * ($charWidth + $charSpacing);
$y = $padding;
// Dessiner des lignes de référence
imageline($image, $x, 0, $x, $imageHeight, $lineColor);
// Dessiner des personnages
imagestring($image, $font, $x, $y, $text[$i], $textColor);
}
// Image de sortie
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
Enregistrez le code ci-dessus comme visualisez.php et déployez-le dans un environnement PHP qui prend en charge les bibliothèques GD. Par exemple, mettez-le dans http://m66.net/visualize.php pour y accéder et voir l'image de sortie.
En plus du dessin de caractère, vous pouvez également ajouter des nombres d'index au bas du caractère, compter la fréquence de chaque caractère ou couleur pour distinguer différents types de caractères. De plus, si vous dessinez chaque ligne en tant que jeu de données, vous pouvez même générer une carte de chaleur de caractère en forme de graphique.