Transparence, GD et Gif

Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009 - 8 août 2007 à 11:24
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 - 9 août 2007 à 01:32
Bonjour !

J'ai un petit problème avec notre cher IE 6, qui ne gère pas la transparence des PNG sans cheater, du coup, je suis obligé de me tourner vers les GIF, et je n'y arrive pas! Je vous explique.
J'ai une image de base représentant une fille, le tout sur fond transparent. Le but est d'en créer une miniature en gardant la transparence, j'ai bien réussit avec un PNG, mais avec un GIF, rien à faire!
Voici mon code :

function mini($_img,$_nom) {
    list($l,$h,$e) = getimagesize($_img);
    if(!in_array($e,array(1,2,3))) return false;

    define('X',100);
    define('Y',100);   
    define('FORMAT_GIF',1);
    define('FORMAT_JPEG',2);
    define('FORMAT_PNG',3);

     $handle = imagecreatefrompng($_img);
     imagealphablending($handle,false);
     imagesavealpha($handle,true);
  
    $return = imagecreatetruecolor(X,Y);

    $coef = 0;
    if($l>X || $h>Y) {
        if($l>=$h)
            $coef = X/$l;
        else
            $coef = Y/$h;
    } else
        $coef = 1;

    $nX = $l*$coef;
    $nY = $h*$coef;
    $pX = floor((X-$nX)/2);
    $pY = floor((Y-$nY)/2);
   
    imagecopyresampled($return,$handle,$pX,$pY,0,0,$nX,$nY,$l,$h);
    header('Content-type: image/gif');
    imagegif($return);
}

Si quelqu'un a une solution miracle ou juste une solution (genre qui fonctionne), je suis preneur!
Merci d'avance

11 réponses

pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
8 août 2007 à 13:22
Un cheat très propre est mon code JS qui règle tes problèmes de façon tout à faire automatique....
http://www.javascriptfr.com/codes/TRANSPARENCE-PNG-SOUS-IE-FIXEE-AVEC-MOOTOOLS_43542.aspx

sinon.... jette un coup d'oeil à ma source php:
http://www.phpcs.com/codes/YIFTITRE-INSERER-TITRES-CONTENTANT-POLICES-RARES_43558.aspx

il y a un passage qui traite les gif transparents.....

Tcho!

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
8 août 2007 à 13:25
P.S.: imagecolorallocatealpha()  et imagecolortransparent() devraient êtres tes amis :) regarde la doc sur PHP.net

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
0
Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009
8 août 2007 à 14:24
Euh ouais mais je rame
J'ai essayé de faire ca :
<?php
$i = imagecreatetruecolor(200,200);
$c = imagecolorallocatealpha($i,0,255,255,127);
imagefilledrectangle($i,0,0,200,200,$c);
imagecolortransparent($i,$c);
$img = imagecreatefrompng('static/images/perso.png');
imagecopymerge($i,$img,0,0,0,0,500,989,100);
header('Content-type: image/gif');
imagegif($i);
?>

Et la transparence est passée à la trappe :(
Je fais quelque chose de travers ?
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
8 août 2007 à 14:33
essaye sans imagefilledrectangle($i,0,0,200,200,$c); et sinon, comme dit jette un coup d'oeil à ma source [ http://www.phpcs.com/codes/YIFTITRE-INSERER-TITRES-CONTENTANT-POLICES-RARES_43558.aspx ] là jsuis pas chez moi..... donc pas accès à la source, et peu pas télécharger le zip, le filtre d'URL du proxy fait chier ici

Allé! à plus

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009
8 août 2007 à 14:36
Je suis allé voir ta source, effectivement imagetransparent fonctionne, elle remplace une couleur par rien, si je puis dire, c'est pratique pour utiliser une police ou quelque chose comme ca, mais la on parle d'une image, donc la couleur que je vais passer en transparente est succeptible d'etre présente dans l'image, et du coup ben ca casse tout!

Ra c'est relou les gifs, et c'est surtout frustrant de se dire que j'ai réussit facilment à le faire pour du png, mais IE 6 n'interprete pas ça et blablabla et blablabla :(
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
8 août 2007 à 15:00
y'a surement moyen de tricher..... tu peux me faire un shéma/exemple de ce que tu veux???? si tu préfère le chat directe dis le (ICQ ou MSN.......) jte passe mes coordonnées par Mess. Perso.

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
8 août 2007 à 15:02
Sinon comme dit, y'a moyen de tricher du coté utilisateur/navigateur.... les exemples sont suffisants, et si le non-usage de JS n'est pas une contrainte tu peux utiliser mon script JS (lien en-haut)....

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
8 août 2007 à 15:15
Sinon tu pourrais essayer avec Image Magick, si cette bibliothèque est dispo sur ton serveur...

encore une possibilité: regarde comment ils ont résolu ce problème chez http://phpthumb.sourceforge.net/ parce que là il y arrivent ^^

Allé!! bonne chance :) si t'a une question n'hésite pas à demander!

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
0
Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009
8 août 2007 à 15:18
En fait, j'ai le dessin d'un bonhomme si on peut dire, (j'ai pas trouvé de terme plus parlant), donc t'imagines un mec debout, au millieu de l'image, sur fond transparent. Cette image, je veux pouvoir la modifier via php, que ce soit en couper une partie pour ne récupérer que le buste ou tout simplement la réduire. Tout ca j'y arrive, j'arrive même à converser la transparence des png, mais une fois affichés sous ie, j'ai un magnifique voile bleu à la place de la transparence, et ca ne rend pas beau du tout dans mon site

Du coup, je suis obligé d'utiliser un GIF, et je n'y arrive pas, et je vais tout casser -_-

J'suis pas contre ton adresse msn, sait on jamais ;)
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
8 août 2007 à 15:58
La solution trichée (JS) ne marche pas???? ce serait plus simple que de tout casser ^^

Mon adresse MSN est dans ta boite CS....

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
0
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
9 août 2007 à 01:32
Salut,
un petit coup d'oeil ici : http://homepage.ntlworld.com/bobosola/pnghowto.htm.
0
Rejoignez-nous