Hermes le Messager Breton Quiétiste | t509 a écrit :
Bonjour à tous,
J'ai voulu générer des images à la volée comme expliqué dans l'article du site phpteam
http://www.phpteam.net/affiche.php?quoi=rasmus
Le souci est que j'obtiens une erreur d'ouverture du fichier de la police de caractère : impossible
Le fichier est pourtant bien là et la déclaration du chemin bonne.
A la fin de l'article il est écrit que l'on doit s'assurer du support TTF par sa config PHP. Quel est donc le paramètre à vérifier ? Je ne l'ai pas trouvé dans la doc PHP ni aucune référence dans phpinfo().
Je fonctionne avec EasyPHP 1.7
Merci et à bientôt
le code pour les intéréssés
Code :
- <?php
- //appel par create_img.php?police=arial&taille=12&coulfond=0c0c0c&coultext=000000&coulombr=0f0f0f&texte=TEST
- //définition des variables par défaut
- $chemin_polices = "../";
- $police_defaut = "arial.ttf";
- $taille_police_defaut = 11;
- $texte_defaut = "Bouton Auto";
- $couleur_fond_defaut = "FFFFFF";
- $couleur_texte_defaut = "000000";
- $couleur_ombre_defaut = "0F0F0F";
- //récupération et contrôle des paramètres
- //les couleurs doivent être en hexa sur 6 caractères
- $police = (isset($_GET['police']) && is_file($chemin_polices.$_GET['police']."TTF" )) ? $chemin_polices.$_GET['police']."TTF" : $chemin_polices.$police_defaut;
- $taille_police = (isset($_GET['taille']) && is_int($_GET['taille'])) ? $_GET['taille'] : $taille_police_defaut;
- $texte = (isset($_GET['texte'])) ? $_GET['texte'] : $texte_defaut;
- $couleur_fond = (isset($_GET['coulfond']) && strlen($_GET['coulfond']) == 6) ? $_GET['coulfond'] : $couleur_fond_defaut;
- $couleur_texte = (isset($_GET['coultext']) && strlen($_GET['coultext']) == 6) ? $_GET['coultext'] : $couleur_texte_defaut;
- $couleur_ombre = (isset($_GET['coulombr']) && strlen($_GET['coulombr']) == 6) ? $_GET['coulombr'] : ((isset($_GET['coulombr']) && strlen($_GET['coulombr']) == 3) ? "OFF" : $couleur_ombre_defaut);
- //extraction des composantes RVB
- $coul_fond[] = hexdec($couleur_fond{0}.$couleur_fond{1});
- $coul_fond[] = hexdec($couleur_fond{2}.$couleur_fond{3});
- $coul_fond[] = hexdec($couleur_fond{4}.$couleur_fond{5});
- $coul_texte[] = hexdec($couleur_texte{0}.$couleur_texte{1});
- $coul_texte[] = hexdec($couleur_texte{2}.$couleur_texte{3});
- $coul_texte[] = hexdec($couleur_texte{4}.$couleur_texte{5});
- if ($couleur_ombre <> "OFF" ) {
- $coul_ombre[] = hexdec($couleur_ombre{0}.$couleur_ombre{1});
- $coul_ombre[] = hexdec($couleur_ombre{2}.$couleur_ombre{3});
- $coul_ombre[] = hexdec($couleur_ombre{4}.$couleur_ombre{5});
- }
- //calcul de la taille de l'image
- $taille_img = imagettfbbox($taille_police,0,$police,$texte);
- $dx = abs($taille_img[2]-$taille_img[0]);
- $dy = abs($taille_img[5]-$taille_img[3]);
- $xpad=15;
- $ypad=9;
- //création de l'image
- $img = imagecreate($dx+$xpad,$dy+$ypad);
- //allocation des couleurs
- $c_fond = ImageColorAllocate($img, $coul_fond[0],$coul_fond[1],$coul_fond[2]);
- $c_text = ImageColorAllocate($img, $coul_texte[0],$coul_texte[1],$coul_texte[2]);
- $c_ombr = ImageColorAllocate($img, $coul_ombre[0],$coul_ombre[1],$coul_ombre[2]);
- //remplissage du fond
- ImageRectangle($img,0,0,$dx+$xpad,$dy+$ypad,$c_fond);
- //dessin de l'ombre
- if ($couleur_ombre <> "OFF" ) ImageTTFText($img, $taille_police, 0, (int)($xpad/2)+1, $dy+(int)($ypad/2), $c_ombr, $police, $texte);
- //dessin du texte
- ImageTTFText($img, $taille_police, 0, (int)($xpad/2), $dy+(int)($ypad/2)-1, $c_text, $police, $texte);
- //envoi de l'image au navigateur
- Header("Content-type: image/png" );
- ImagePNG($img);
- //destruction de l'image
- ImageDestroy($img);
- ?>
|
|
C'est toujours la même histoire
Quand on récupère un script tout fait mais qu'on a pas le niveau pour le faire soi-même, ça marche jamais.
Dans ton cas, le chemin quoi que tu en penses est surement pas bon.
Refait ce que fais ce script PROGRESSIVEMENT étape par étape, refait TOI-MEME le script, et tu vas non seulement réussir à trouver d'où vient l'erreur mais également progresser. |