Question sur gd2

Résolu
Signaler
Messages postés
19
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
17 mai 2008
-
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
bonjour,
Je viens d'utiliser gd2 afin de creer un png,

J'ai deux questions lorsque dans imagepng($im,'image.png'); je specifie une destination , J'ai le message d'erreur suivant :
L'image “http://localhost/image.php” ne peut être affichée car elle contient des erreurs.

alors que quand je mets imagepng($im); la mon image s'affiche.

Deuxieme question, lorsque  j'integre une rotation je suis obliger de redefinir mon image $im=imagerotate($im, 45, $rouge);
alors qu'avec les autres fonction je n'ai pas besoin de faire ainsi ( pas de $im=)

une fois ma rotation fini je ne peux faire fonctionner imagefilltoborder($im,100,50,$background_color,$vert);
toute mon image devient noir pourquoi ????

Merci pour votre aide

voici mon code

<?php

header("Content-type: image/png");
$im = imagecreate(200, 200)  or die("Impossible d'initialiser la bibliothèque GD");
$background_color = imagecolorallocate($im, 100, 90, 255);

$text_color = imagecolorallocate($im, 255, 255, 255);
$rouge=imagecolorallocate($im,255,0,0);
$vert = ImageColorAllocate($im, 0, 255, 0);
$bleu = ImageColorAllocate($im, 0, 0, 255);

// On dessine l'ellipse blanche
imagefilledellipse($im, 100, 100, 150, 100, $rouge);

//$im=imagerotate($im, 45, $rouge);

imagefilltoborder($im,100,50,$background_color,$vert);
imagestring($im, 1, 50, 97,  "creation d'image", $text_color);
//imagecolordeallocate($im, $vert);
imagecolortransparent  ( $im, $background_color );

imagepng($im,'image.png');
imagedestroy($im);

?>

3 réponses

Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Re,
ma variable $vert vaut $vert = ImageColorAllocate($im, 0, 255, 0); ( comme indique dans le premier post)

LOL j'ai pas fait gaffe... Petits yeux moi aujourd'hui...
Désolé donc pour cette question à la noix.

j'ai vraiment des problemes avec la rotation lorsque je fais ma rotation je perds la transparance de mon image, (...)
Comment faire???
http://fr.php.net/manual/fr/function.imagerotate.php#46338

imagerotate does not preserve the alpha channel, so if you want to rotate a PNG you need to get 

creative.

Lire la suite du commentaire qui indique la marche à suivre. D'autres commentaires dans la doc peuvent aussi être pertinents.

Pour ma premiere question lorsque je defini ma adresse de destination
imagepng($im,'image.png'); je n'ai plus la possibilite d'afficher
l'image directement?
Si. Mais pas avec son URL. L'URL, c'est du texte qui indique au navigateur om trouver l'image. Si tu l'envoie avec imagepng, ce n'est pas du texte qui est envoyé, mais l'image elle-même.

Tu peux donc tout à fait enregistrer ton image sur le disque dur du serveur, et renvoyer dans du html, l'url vers cette image. Cependant, dans un même script, c'est pas forcément recommandé.
Tu peux aussi enregistrer l'image sur le disque dur, et la renvoyer également directement au navigateur.

Si ton script renvoit l'image au navigateur, avec un entête de contenu, il ne doit rien renvoyer d'autre.

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

Quand tu utilises l'argument dest dans la fonction imgpng(), la fonction va écrire le fichier sur le disque dur. Si ensuite tu veux y accéder via le web, il faut spécifier l'URL du fichier créé, pas l'url du script PHP.
Ton script envoit le header de contenu dès la première ligne : ton navigateur s'attend donc à afficher une image : en entier, c'est à dire qu'il ne s'attend pas à trouver du texte.

Pour ta deuxième question, que vaut la variable $vert ?
Ce doit être un identifiant de ressource qui pointe sur une couleur. Cf la doc :
* : <tt class=\"parameter\">color</tt>
La couleur de remplissage. Un identifiant de couleur
créé par la fonction la doc de PHP avant de poser des questions triviales...
Messages postés
19
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
17 mai 2008

salut,
ma variable $vert vaut $vert = ImageColorAllocate($im, 0, 255, 0); ( comme indique dans le premier post)

j'ai vraiment des problemes avec la rotation lorsque je fais ma rotation je perds la transparance de mon image, ainsi lorsque je souhaite faire des coins pour les menu par example et ben je n'ai plus qu'une image avec du transparent...
Comment faire???

Pour ma premiere question lorsque je defini ma adresse de destination imagepng($im,'image.png'); je n'ai plus la possibilite d'afficher l'image directement?

Et pour la deuxieme pourquoi lors de la rotation on doit reaffecte l'image? de cette sorte $im=imagerotate($im, 45, $rouge);

Merci