Page 1 sur 1

[GD2] créé un png en conservant les transparences via GD2

Posté : 27 mai 2008, 15:05
par BeRoots
Salut la compagnie ;)
Je souhaite mettre au point un script de traitement d'image png afin de créé une image png conservant les transparences d'origine...

J'ai fait comme ceci mais rien à faire, j'ai toujour le message d'erreur "l'image ne peut être afficher car elle contient des erreurs":
<?php
// On va renvoyer une image PNG
header('Content-Type: image/png');


// Definition des parametres du script:
// hauteur et largeur de l'image final
$largeur = 97;
$hauteur = 120;
// url des images sources et hauteur, largeur de celle-ci
$img_src_url = "header.png";
$largeur_img1 = 97;
$hauteur_img1 = 120;

// Création de l'image (vierge)
$rendu = imagecreatetruecolor($largeur, $hauteur);

// Par défaut le fond de l'image est noir, on va la remplir d'une couleur
// Ici du tansparent
$fond = imagecolorallocatealpha($rendu,  0, 0, 0, 127);

// on effectue le remplissage avec le fond créé
imagefill($rendu, 0, 0, $fond);

// On active l'alphablending
imagealphablending($rendu, true);

// On charge le ou les image(s) png
$image1 = imagecreatefrompng($img_src_url);

// Fusion des images sur l'image finale
imagecopy($rendu, $image1, 0, 0, $largeur_img1, $hauteur_img1);

// On déactive l'alphablending
imagealphablending($rendu, false);

// Sauvegarde des données alpha
imagesavealpha($rendu, true);

// Enfin, on rend l'image
imagepng($rendu);
?>
Si quelqu'un à une idée sur le pourquoi du comment ? ;)

Posté : 27 mai 2008, 23:32
par Hywan
Hey :),

D'après le manuel, je désactiverais l'alpha blending dès le début.
Sinon essaye tout bêtement, et ajoute des fonctions au fur et à mesure, tu verras bien ce qui te met dans la mouille :).

Posté : 28 mai 2008, 07:59
par Calimero
Hello,

Quand tu obtiens ce message d'erreur, commente la première ligne (le header('Content-Type: image/png'); ) et regarde bien l'image générée (ouvre directement l'url de l'image dans un onglet du navigateur). C'est tout de suite plus simple quand on voit l'erreur ;-)

Posté : 28 mai 2008, 09:45
par BeRoots
Oki merci les chefs ;)
J'ai fini par trouvé. C'est plus simple quand on à le message d'erreur ;)

Par contre je voudrai faire en sorte d'avoir mon image en temps que chaine dans mon fichier php.
un truc du genre ceci:
$pngFolder = <<< EOFILE
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAABhlBMVEX//v7//v3///7//fr//fj+/v3//fb+/fT+/Pf//PX+/Pb+/PP+/PL+/PH+/PD+++/+++7++u/9+vL9+vH79+r79+n79uj89tj89Nf889D88sj78sz78sr58N3u7u7u7ev777j67bL67Kv46sHt6uP26cns6d356aP56aD56Jv45pT45pP45ZD45I324av344r344T14J734oT34YD13pD24Hv03af13pP233X025303JL23nX23nHz2pX23Gvn2a7122fz2I3122T12mLz14Xv1JPy1YD12Vz02Fvy1H7v04T011Py03j011b01k7v0n/x0nHz1Ejv0Hnuz3Xx0Gvz00buzofz00Pxz2juz3Hy0TrmznzmzoHy0Djqy2vtymnxzS3xzi/kyG3jyG7wyyXkwJjpwHLiw2Liw2HhwmDdvlXevVPduVThsX7btDrbsj/gq3DbsDzbrT7brDvaqzjapjrbpTraojnboTrbmzrbmjrbl0Tbljrakz3ajzzZjTfZijLZiTJdVmhqAAAAgnRSTlP///////////////////////////////////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9XzUpQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAACqSURBVBiVY5BDAwxECGRlpgNBtpoKCMjLM8jnsYKASFJycnJ0tD1QRT6HromhHj8YMOcABYqEzc3d4uO9vIKCIkULgQIlYq5haao8YMBUDBQoZWIBAnFtAwsHD4kyoEA5l5SCkqa+qZ27X7hkBVCgUkhRXcvI2sk3MCpRugooUCOooWNs4+wdGpuQIlMDFKiWNbO0dXTx9AwICVGuBQqkFtQ1wEB9LhGeAwDSdzMEmZfC0wAAAABJRU5ErkJggg==
EOFILE;
1°) Si quelqu'un sait comment obtenir ce genre de chaine depuis une image ?
2°) Je ne trouve rien sur <<< EOFILE dans la doc php. Si quelqu'un peut m'en dire d'avantage sur cette syntaxe ?


Merci d'avance.

Posté : 28 mai 2008, 09:58
par Hywan
1. Pour avoir le contenu d'une image, il suffit de lire l'image (file_get_open() et consort). Attention, ça peut être super lourd … ;
2. La syntaxe que tu présentes est la syntaxe HEREDOC.

Posté : 12 juin 2008, 13:38
par BeRoots
ok merci, c'est tout ce que je souhaitait savoir ;)

Posté : 13 juin 2008, 10:49
par zmbl
Bonjour,

J'apporte une petite précision supplémentaire pour ceux qui cherchent comment générer un EOFILE à partir d'une image.

J'ai trouvé un snippet assez intéressant ici :

http://snippets.dzone.com/posts/show/5274

Bonne journée

Re: [GD2] créé un png en conservant les transparences via GD2

Posté : 15 août 2010, 03:57
par rokia
@ReBoots: comment t'as fait pour voir les erreurs explicitement ,car moi quand j'ai commenté le header et j'ai appelé la page directement ,toujours la meme erreur qui s'affiche 'l'image "" ne peut etre affichée car elle contient des erreurs'!!
Merci à l'avance pour vos réponses.