Page 1 sur 1

GD : redimenssioner Gif en conservant sa transparence ?

Posté : 15 juin 2006, 18:15
par Insomniak
Bonjour,

Je cherche actuellement s'il existe un moyen de redimenssioner une image gif ayant une couleur de transparence tout en la conservant ?
A l'heure actuelle, ma classe servant à redimenssioner fonctionne mais zappe la couleur de transparence et je me retrouve donc avec une image avec un fond.

Sauriez vous si cela est possible ?
Merci d'avance
@++

Posté : 15 juin 2006, 18:24
par Mouet
Á la limite, utilise imagecolortransparent() :D

Posté : 16 juin 2006, 02:06
par insomniak
Salut,

Bah apparement cela ne fonctionne pas :s
grosso modo voici comment j'ai procédé :

je récupere mon image originale avec un $source = imagecreatefromgif...
Puis je fais un $transparence = imagecolortransparent($source)
je créé mon image de destination avec imagecreatetruecolor
je fais mon redimensionnement avec imagecopyresampled et je place dans la destination
je recopie la transparence dans ma nouvelle image via imagecolortransparent($destination,$transparence)
et enfin je fais mon imagegif pour stocker dans mon fichier.

Le fond reste noir :(
Any idea ? merci d'avance
++

Posté : 16 juin 2006, 10:57
par Mouet
Tu dois spécifier une couleur de transparence en l'occurence, le noir
int imagecolortransparent ( resource image [, int color] )

Posté : 17 juin 2006, 00:44
par insomniak
Oui en effet mais si tu regardes de plus pret, c'est bien ce que j'ai utilisé...
En fait, tu n'es pas obligé de mettre une couleur noire.
Ce qu'il faut c'est récupérer la couleur transparente de l'image source avec la fonction imagecolortransparent puis créer ta nouvelle image aux dimensions voulues avec imagecreatetruecolor, remplir cette image avec la couleur de transparence puis assigner cette couleur de transparence en faisant un imagecolortransparent sur l'image de destination et enfin copier le gif resizé dans l'image de destination.
Un conseil : préferer imagecopyresized plutot que imagecopyresampled car le resampled deteriore les couleurs et donc la transparence merdouille.

Voilou !
@++