JeuWeb - Crée ton jeu par navigateur
Erreur dans une image générée par Php (GD) - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Erreur dans une image générée par Php (GD) (/showthread.php?tid=2437)



Erreur dans une image générée par Php (GD) - Spoutnik - 18-02-2008

Bonjour,

Je retravaille un script pour afficher certaines infos IG dans une signature, un petit mod sympa quoi.
Cependant je rencontre un problème et je n'arrive pas à cerner le pourquoi du comment.

Voici le petit code source:
Code :
$image = imagecreatefrompng("signature.png");
$blanc = imagecolorallocate($image, 255, 255, 255);

$faction = "faction_joueur"; <- valeur qui change
$classe = "classe_joueur"; <- valeur qui change

$nom = $tag.$user['pseudo'];
$nom1 = preg_split('//', $nom, 15);
$nom2='';
$i=0;
while($i < 14) {
    $nom2.=$nom1[$i];
    if (($i+1)==14 && $nom1[14]!='') {
        $nom2.= "...";
    }
    $i++;
}

$ligne1 = "Nom: ".$nom." - Faction : ".$faction;
$ligne2 = $classe." de niveau ".$user['lvl'];

imagestring($image, 4, 10, 45, $ligne1, $blanc);
imagestring($image, 4, 10, 60, $ligne2, $blanc);
imagestring($image, 4, 10, 75, $grade, $blanc);
imagepng($image);

Petites précisions: je n'ai pas mis la partie du code concernant les requêtes SQL et le traitement des premières données car en cherchant d'où venaient l'erreur, je me suis aperçu qu'elle venait uniquement de la boucle. Cette boucle permet de mettre des "..." si le pseudo de l'utilisateur est trop long.
Code :
$i=0;
while($i < 14) {
    $nom2.=$nom1[$i];
    if (($i+1)==14 && $nom1[14]!='') {
        $nom2.= "...";
    }
    $i++;
}

Alors pour le coup, je me pose des questions: après avoir testé sur un autre fichier ce que retournait la boucle, elle affiche ce qu'il faut et pourtant l'image "contient une erreur". J'ai bien activé GD puisque j'arrive à afficher une image si je met la boucle en commentaire.

En vous remerciant par avance de vos aides, bonne journée, Spoutnik.

PS: pour ceux qui voudraient vérifier rapidement, voici le code source que j'ai utilisé pour tester la boucle:
Code :
$nom = "[EG] Boris_the_blade";
$nom1 = preg_split('//', $nom, 15);
$nom2='';
$i=0;
print_r($nom1);
while($i < 14) {
    $nom2.=$nom1[$i];
if (($i+1)==14 && $nom1[14]!='') {
    $nom2.= "...";
}
    $i++;
}
print_r($nom2);



RE: Erreur dans une image générée par Php (GD) - LittleQI - 18-02-2008

Pour l'aout des '...' ce serait surement plus rapide comme ceci non?
Code PHP :
<?php 
$nvNom
= (strlen($nom)<=14)?$nom:substr($nom,0,14).'...';
ça evite la boucle while avec une condition dedans Smile

Sinon si ça fonctionne a part et que ça ne fonctionne pas dans le ode avec GD c'est qu'il y a une erreur sur les données en entrée ($tag.$user['pseudo']), as-tu essayé de mettre en commentaire la fonction "imagepng($image);" et afficher les données que tu ecris dans l'image? histoire de voir si elles correspondent bien à ce que tu veux.


RE: Erreur dans une image générée par Php (GD) - Spoutnik - 18-02-2008

Je viens d'essayer avec ton expression pour trouver le nom, et ça fonctionne oO Donc ça vient pas des données en entrée (j'ai essayé aussi).
C'est vraiment bizarre...je comprend pas pourquoi cette boucle fait tout planter, m'enfin, ça marche là Smile

Merci beaucoup de ton aide Smile
Bonne journée, Spoutnik.

PS: si certains comprennent le problème de la boucle, n'hésitez pas à faire signe par ici, merci Smile