Question sur gd2

Résolu
fabienenvac Messages postés 19 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 17 mai 2008 - 10 avril 2008 à 14:58
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 10 avril 2008 à 17:21
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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 avril 2008 à 17:21
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...
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 avril 2008 à 16:20
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...
0
fabienenvac Messages postés 19 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 17 mai 2008
10 avril 2008 à 17:07
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
0