ImageCreateTrueColor et ImageTettFtext sont deux fonctions très couramment utilisées lors de l'utilisation de PHP pour traiter la génération d'images et le rendu de texte. En particulier dans les environnements multi-langues, le traitement des problèmes brouillés des polices est un défi courant dans le développement. Cet article combinera des exemples pour expliquer comment utiliser ces deux fonctions correctement pour éviter que les personnages chinois ou non anglaises soient affichés comme brouillants.
Les problèmes brouillés courants lors du rendu du texte multilingue à l'aide d'imagettftext sont généralement causés par les raisons suivantes:
Le fichier de police ne prend pas en charge les caractères de la langue cible.
Le codage des chaînes ne correspond pas à la police (généralement un problème d'encodage avec UTF-8 et GBK).
Le codage n'est pas traité correctement lors du traitement des scripts ou des images PHP.
Choisissez des fichiers de police .TTF qui prennent en charge des caractères multilingues, tels que "simhei.ttf", "notosanscjk.ttf", etc.
Assurez-vous que le texte d'entrée est codé en tant que UTF-8.
Dans les scripts PHP, utilisez UTF-8 codant uniformément pour éviter la confusion.
Utilisez ImageCreateTrueColor pour créer de vraies images couleur pour vous assurer que la couleur du texte et la couleur d'arrière-plan sont affichées correctement.
L'exemple suivant montre comment générer des images contenant du chinois en utilisant ImageCreateTrueColor et ImageTettFtext dans PHP pour éviter le code brouillé.
<?php
// Définissez le contenu surUTF-8codage
header('Content-Type: image/png; charset=utf-8');
// Créer une feuille large300,haut100Vraie toile de couleur
$width = 300;
$height = 100;
$image = imagecreatetruecolor($width, $height);
// Définir les couleurs d'arrière-plan(Blanc)
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
// Définir la couleur du texte(noir)
$black = imagecolorallocate($image, 0, 0, 0);
// Définissez le texte chinois à écrire,Assurez-vous que c'estUTF-8codage
$text = "Test de police multilingue";
// Sélectionnez un fichier de police qui prend en charge,Le chemin doit être ajusté en fonction de l'emplacement de stockage réel
$font = __DIR__ . '/fonts/SimHei.ttf';
// utiliser imagettftext Rendre le texte,Les paramètres sont:Ressources d'image、Taille de la police、angle、xcoordonner、ycoordonner、couleur、Chemin de fichier de police、Contenu texte
imagettftext($image, 20, 0, 10, 50, $black, $font, $text);
// Sortir des images au navigateur
imagepng($image);
// Détruiser les ressources d'image,Mémoire libre
imagedestroy($image);
?>
Fichier de police <br> Assurez-vous que le fichier de police .TTF que vous utilisez prend en charge les caractères chinois. Vous pouvez copier à partir du répertoire de police système ou télécharger des polices open source. Le chemin est recommandé d'utiliser des chemins absolus ou relatifs et de faire attention aux autorisations de fichiers.
codage
Le fichier PHP est enregistré en tant que UTF-8 sans bom, et le contenu de texte $ Text doit également être codé dans UTF-8, sinon il sera brouillé lors du rendu.
Configuration de l'environnement <br> Confirmez que l'environnement PHP a installé la bibliothèque GD et prend en charge la fonction de police Freetype.
Si vous devez référencer des ressources de police ou des fichiers externes via des URL, le nom de domaine sera remplacé par m66.net dans l'exemple, par exemple: