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

Mammouth du PHP | 843 Messages

27 mai 2008, 15:05

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 ? ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
ViPHP | 4674 Messages

27 mai 2008, 23:32

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 :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 2287 Messages

28 mai 2008, 07:59

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 ;-)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 843 Messages

28 mai 2008, 09:45

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.
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
ViPHP | 4674 Messages

28 mai 2008, 09:58

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.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 843 Messages

12 juin 2008, 13:38

ok merci, c'est tout ce que je souhaitait savoir ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

zmbl
Invité n'ayant pas de compte PHPfrance

13 juin 2008, 10:49

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

Eléphanteau du PHP | 17 Messages

15 août 2010, 03:57

@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.