Foros del Web » Programando para Internet » PHP »

problema png transparente e iexplorer

Estas en el tema de problema png transparente e iexplorer en el foro de PHP en Foros del Web. Hola gente. Hacía mucho que no pasaba por aquí y vuelvo con una duda. He creado una imagen con un color transparente, pero resulta que ...
  #1 (permalink)  
Antiguo 05/09/2005, 07:45
 
Fecha de Ingreso: diciembre-2003
Ubicación: Salamanca
Mensajes: 123
Antigüedad: 20 años, 3 meses
Puntos: 3
problema png transparente e iexplorer

Hola gente.
Hacía mucho que no pasaba por aquí y vuelvo con una duda.
He creado una imagen con un color transparente, pero resulta que sólo me funciona con firefox no con iexplorer ...
He probado con 'ImageColorAllocatealpha' pero la imagen se queda negra.
¿Sabéis qu pede ser?¿es un error mio?
Muchas gracias.
dobeto

Código PHP:
$imagen imagecreatetruecolor($w[$fSize], $h[$fSize]);

/* Fijamos los colores. */
$clr['trns']= ImageColorAllocate($imagen,255,255,0);
$clr['negro']= ImageColorAllocate($imagen,0,0,0);
$clr['blanco']= ImageColorAllocate($imagen,255,255,255);
$clr['azul']= ImageColorAllocate($imagen,0,0,255);
$clr['rojo']= ImageColorAllocate($imagen,255,0,0);
$clr['verde']= ImageColorAllocate($imagen,0,255,0);
$clr['celeste']= ImageColorAllocate($imagen,0,255,255);
$clr['amarillo']= ImageColorAllocate($imagen,255,255,0);

if(
$fondo=='trns'imagecolortransparent($imagen,$clr[$fondo]);

/* Rellenamos el fondo de la imagen. */
ImageFilledRectangle($imagen,0,0,$w[$fSize],$h[$fSize],$clr[$fondo]);
  
/* Dibujamos el borde de la imagen. El borde tiene tamaño fijo */
if($borde_w=='1'ImageRectangle($imagen,0,0,$w[$fSize] -1,$h[$fSize] -1,$clr[$borde_cl]);

ImageString($imagen,$fSize,3,3,$txValor,$clr[$tx_cl]);

Header"Content-type: image/png");
imagepng($imagen); 
  #2 (permalink)  
Antiguo 05/09/2005, 15:20
 
Fecha de Ingreso: diciembre-2003
Ubicación: Salamanca
Mensajes: 123
Antigüedad: 20 años, 3 meses
Puntos: 3
Me respondo yo mismo.
Después de buscar por foros y google, parece ser que IExplorer no soporta bien los PNG y las versiones nuevas de GD (a partir de la 1.6) no dan soporte a GIF.
Lo curioso es que he encontrado infinidad de scripts que generan píxeles transparentes y en ningún caso se hace referencia al problema.
Mi inglés es muy escaso y apenas puedo entender los artículos al respecto... Agradecería algo de información.
Muchas gracias de nuevo.
dobeto
  #3 (permalink)  
Antiguo 05/09/2005, 15:31
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 1 mes
Puntos: 4
es problema de ke el IE es muy deficiente, pero en los filtros visuales de MSIE, en concreto el filtro AlphaImageLoader, mediante el cual podremos usar archivos PNG sin restricciones. Para ello, copia el siguiente código, y guárdalo con el nombre png.js:

Código HTML:
function PNG_loader() {
   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;";
         if (img.align == "right") imgStyle += "float:right;";
         if (img.parentElement.href) imgStyle += "cursor:hand;";
         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--;
      }
   }
}
window.attachEvent("onload", PNG_loader);
y ahora pega este codigo en todas las cabeseras de tu web ke mostraran ese tipo de imagenes png

Código HTML:
<!--[if gte IE 5.5000]>
<script type="text/javascript" src="./png.js"></script>
<![endif]--> 
Lo que conseguimos mediante este código es que, una vez cargada la página, se corrijan las imágenes PNG del documento a través del filtro. Como podrás comprobar, primeramente se muestran las imágenes sin transparencia, y una vez que todo el documento se ha cargado, las imágenes serán sustituidas. De esta manera conseguimos solucionar el problema provocado por el uso de un navegador deficiente, aunque lo ideal sería que no tuviéramos que recurrir a estos trucos por culpa de los desarrolladores de Microsoft (aquí se ha explicado cómo hacerlo con javascript, pero también existen soluciones mediante CSS). Comprueba qué tal se ven los archivos PNG transparentes en tu navegador, y nos dices

saludos
  #4 (permalink)  
Antiguo 05/09/2005, 15:43
 
Fecha de Ingreso: diciembre-2003
Ubicación: Salamanca
Mensajes: 123
Antigüedad: 20 años, 3 meses
Puntos: 3
Gracias por la respuesta y la solución...
Para lo que quiero (generar contadores de visitas) no me vale, pues necesito que la referencia al contador sea una imagen, sin insertar más código.
Tendré que dar dos opciones para quien quiera un contador... fondo de color par a IE y transparente para el resto
Muchísimas gracias de nuevo.
dobeto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:56.