8792 sujets

Développement web côté serveur, CMS

Bonsoir!

Comment contourner le bug d'ie concernant la transparence des png dessinée avec la libraire gd de php?
Quelle est le bonne méthode pour faire cela d'une manière catholique (sans javascript)?
Fonctionne avec firefox mais affiche un background blanc avec ie
Modifié par Ralfman68 (04 Mar 2007 - 09:48)
Ralfman68 a écrit :
Comment contourner le bug d'ie concernant la transparence des png dessinée avec la libraire gd de php?

Le bug de IE concernant la transparence PNG ne concerne que la transparence 24bit... En effet, les PNG transparent sur 8bits (comme le gif) ne souffre pas de ce bug sous IE !

Or, la version de GD utilisé par PHP ne peut générer que de la transparence 8bits (si elle arrive a faire mieux, je veux qu'on m'explique !) donc, le problème ne se pose pas Smiley cligne
Précision : Je parle de transparence de la background-color blanche que j'aimerai supprimer et non de la transparence 'opacité' qui s'applique a l'image entiere.

Ce qui marche avec ffox et, comme d'hab ça plante avec cette hérésie d'ie...
Ralfman68 a écrit :
Je parle de transparence de la background-color blanche que j'aimerai supprimer et non de la transparence 'opacité' qui s'applique a l'image entiere.

Alors là, je n'ai rien compris Smiley sweatdrop
On peut voir un exemple en ligne ?
Si je comprends bien, tu veux dire qu'on peut mettre une couleur de fond, en lui affectant un alpha, et que cette fonctionnalité png ne marche pas sous IE. C'est bien ça ?
Hello :
Jep : j'ai édité mon permier post et j'y ai ajouté un exemple en ligne.
Marvin-le-rouge: oui c'est cela
En l'etat, tu génère des image PNG en couleur vrai (24bits) or, IE ne comprendra pas la transparence de ce genre d'image. Maintenant, vu le type d'image que tu génères, tu aurais tout interret à produire soit du PNG en couleurs indéxées (8bits) ou du GIF, ce qui te permettrait d'avoir la transparence sur tout les navigateurs !

(De mon coté il faut vraiement que je creuse cette histoire de transparence des PNG 24 avec GD... parce en l'etat, tu as bien de la transparence avec FF, mais pas dans Photoshop !)
Smiley smile
:p merci Jep de ton aide!
Les images sont produites avec paintshop et en effet elles ne sont pas transparentes "à la base" . C'est dans mon programme justement que je rend la couleur blanche transparente avec "imagecolortransparent"

A noter qu'opéra m'affiche cela correctement , à 98%.
Je ne sais pas à quelles lois supranaturelles ce navigateur obeït!
Ralfman68 a écrit :
je rend la couleur blanche transparente avec "imagecolortransparent"

Oui, c'est effectivement la bonne demarche...


Ralfman68 a écrit :
Les images sont produites avec paintshop

!!! Dans ce cas pourquoi tu t'embète à utiliser GD ? Pourquoi ne produit tu pas la transparence directement dans ton logiciel ?
un petit script extrêmement efficace de ma composition (librement inspiré de plusieurs autres, mais qui a pour qualiés d'être extrêmement rapide, de ne necessiter aucune autre manipulation, et de ne pas altèrer les scripts sur les images) pour définitivement règler le pb avec IE 5.5 et supérieur :


function correctPNG() {
   for(var i=0; i<document.images.length; i++) {
       var img = document.images[i]
       var imgName = img.src.toUpperCase()
       if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
           var imgID = (img.id) ? "id='" + img.id + "' " : ""
           var imgClass = (img.className) ? "class='" + img.className + "' " : ""
           var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
           var imgStyle = "display:inline-block;" + img.style.cssText 
           if (img.align == "left") imgStyle = "float:left;" + imgStyle
           if (img.align == "right") imgStyle = "float:right;" + imgStyle
           if (img.parentElement.href) imgStyle = "cursor:pointer;" + imgStyle 
           var strNewHTML = "<span " + imgID + imgClass + imgTitle
   + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
      + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
   + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
   img.outerHTML = strNewHTML
   i = i-1
      }
      }
   }
if (navigator.appName.substring(0, 3) == "Mic") window.attachEvent("onload", correctPNG);


Problème ? plus de problème ! Smiley biggrin [/i]