Foros del Web » Programando para Internet » Javascript »

¿Rollover de imagen de blanco y negro a color, como se hace?

Estas en el tema de ¿Rollover de imagen de blanco y negro a color, como se hace? en el foro de Javascript en Foros del Web. Hola Quiero hacer un rollover de Imagen en el que inicialmente se muestra en blanco y negro y al hacer "onmouseover" se muestre en color. ...
  #1 (permalink)  
Antiguo 18/12/2009, 14:03
 
Fecha de Ingreso: marzo-2008
Mensajes: 186
Antigüedad: 16 años, 1 mes
Puntos: 3
¿Rollover de imagen de blanco y negro a color, como se hace?

Hola

Quiero hacer un rollover de Imagen en el que inicialmente se muestra en blanco y negro y al hacer "onmouseover" se muestre en color.

como puedo hacer esto?

saludos.gracias por anticipado
  #2 (permalink)  
Antiguo 18/12/2009, 16:13
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Hola:

Lo más sencillo es un rollover normal con las dos versiones de la imagen:

<img src="gris.jpg" onmouseover="this.style.display = 'none'; this.nextSibling.style.display = 'inline'"><img src="color.jpg" style="display: none" onmouseout="this.style.display = 'none'; this.previousSibling.style.display = 'inline'">

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 18/12/2009, 16:51
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Recomiendo usar CSS para el efecto de RollOver. Se utiliza una imagen que esté formada por los dos estados, se asigna a la propiedad background de un elemento y se juega con su posicion segun el estado.

Ejemplo:

#conimagen{
background-image:url('loquesea.jpg');
background-position: left top;
}

#conimagen:hover{
background-position:right top;
}
  #4 (permalink)  
Antiguo 19/12/2009, 04:28
 
Fecha de Ingreso: marzo-2008
Mensajes: 186
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Muchas gracias por vuestra ayuda.
  #5 (permalink)  
Antiguo 29/12/2009, 08:49
 
Fecha de Ingreso: abril-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Yo tengo algo parecido pero para un boton en un formulario, por si te sirve

Código:
<input type="image" name="guardar" src="imagenes/guardar_off.gif" onmouseout="javascript:this.src='imagenes/guardar_off.gif'" onmouseover="javascript:this.src='imagenes/guardar_on.gif'" alt="Guardar" />
  #6 (permalink)  
Antiguo 29/12/2009, 10:03
 
Fecha de Ingreso: agosto-2008
Mensajes: 469
Antigüedad: 15 años, 8 meses
Puntos: 20
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

En la web de Mikmoro puedes ver el efecto realizado solo con css.

http://araudi.net/ejemplos/BN-Color.html

Saludos¡¡
__________________
Revisa las FAQ's antes de disparar.
  #7 (permalink)  
Antiguo 03/01/2010, 13:51
 
Fecha de Ingreso: marzo-2008
Mensajes: 186
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

ok. gracias por vuestras respuestas, disculpad la tardanza.

Efectivamente, lo hice al final con CSS
  #8 (permalink)  
Antiguo 03/01/2010, 15:33
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Si todavía te interesa una solución javascript con una única imagen, quizá te sirva esto (está al revés, primero en color y luego en escala de grises, pero es fácilmente adaptable):
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
script>
function 
toGrayScale(im){
    
im.style.cursor='pointer';
    if(
document.createElement("canvas").getContext){
        if(
im.gs){
            
im.src=im.gs;
            return;
        }
        var 
ref document.createElement("canvas");
        
ref.width im.width || im.offsetWidth;
        
ref.height =im.height  || im.offsetHeight;
        var 
context ref.getContext("2d");
        
context.drawImage(im,0,0);
        var 
iData=context.getImageData(0,0,  ref.widthref.height);
        var 
data   iData.data;
        var 
length data.length;
          for (var 
0;i<length;i+=4) {
            var 
average = (data[i]+data[i+1]+data[i+2])/3;
              
data[i]   = average;
              
data[i+1] = average;
              
data[i+2] = average;
            
          }
          
context.putImageData(iData00);
          
im.src=im.gs=ref.toDataURL();
    }else{
        
im.style.filter 'progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)';
    }
    
}
</script> 
</head>

<body>
<img onmouseout="this.src='tigre2.jpg';this.style.filter=''" onmouseover="toGrayScale(this)" src="tigre2.jpg" width="550" height="413" />
</body>
</html> 
Aquí un ejemplo: http://www.disegnocentell.com.ar/eje...S/rollgray.php

Última edición por Panino5001; 08/01/2010 a las 21:36
  #9 (permalink)  
Antiguo 01/02/2011, 08:30
 
Fecha de Ingreso: febrero-2011
Mensajes: 2
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Panino5001.
Andaba buscando realizar esto y me sería de mucha ayuda realizar el efecto contrario, no soy programador y probé cambiando la sintaxis de "onmouseout por onmouseover" y no me resultó. Cualquier ayuda sería muy util.
Gracias de antemano.
  #10 (permalink)  
Antiguo 01/02/2011, 09:21
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Probá así (no está muy optimizado, pero ahora no tengo mucho tiempo):
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Rollover</title>
<
script>
function 
toGrayScale(im){
    
im.style.cursor='pointer';
    if(
document.createElement("canvas").getContext){
        if(
im.gs){
            
im.src=im.gs;
            return;
        }
        var 
ref document.createElement("canvas");
        
ref.width im.width || im.offsetWidth;
        
ref.height =im.height  || im.offsetHeight;
        var 
context ref.getContext("2d");
        
context.drawImage(im,0,0);
        var 
iData=context.getImageData(0,0,  ref.widthref.height);
        var 
data   iData.data;
        var 
length data.length;
          for (var 
0;i<length;i+=4) {
            var 
average = (data[i]+data[i+1]+data[i+2])/3;
              
data[i]   = average;
              
data[i+1] = average;
              
data[i+2] = average;
            
          }
          
context.putImageData(iData00);
          
im.src=im.gs=ref.toDataURL();
    }
    
}
onload=function(){
    
toGrayScale(document.getElementById('im'));
    
document.getElementById('im').style.filter='progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)'
    
if(document.getElementById('im').gs)
        
document.getElementById('im').src=document.getElementById('im').gs;
}
</script> 
</head>

<body>
<img id="im" onmouseover="this.src='arwen.jpg';this.style.filter=''" onmouseout="this.src=this.gs || 'arwen.jpg';this.style.filter='progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)'" src="arwen.jpg" />
</body>
</html> 
  #11 (permalink)  
Antiguo 01/02/2011, 13:42
 
Fecha de Ingreso: febrero-2011
Mensajes: 2
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Muchas gracias, lo probaré y te cuento que tal me va.
  #12 (permalink)  
Antiguo 26/03/2012, 13:43
 
Fecha de Ingreso: febrero-2012
Mensajes: 6
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Panino, use tu codigo js pero junto con un repeter WHILE en php pero este solo afecta a la primer imagen que trae de vuelta, el resto no tuvo efecto sabrás a que se debe?

Gracias!!!
  #13 (permalink)  
Antiguo 26/03/2012, 15:23
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Habría que ver cómo lo usaste
  #14 (permalink)  
Antiguo 26/03/2012, 15:39
 
Fecha de Ingreso: febrero-2012
Mensajes: 6
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Lo use asi

<div style="float:left; width:76px; height:53px; ">
<img id="im" onmouseover="this.src='images/marcas/<?php echo"$line[logotipo_marca]"?>';this.style.filter=''" onmouseout="this.src=this.gs || 'images/marcas/<?php echo"$line[logotipo_marca]"?>';this.style.filter='progid:DXImageTransform.Mi crosoft.BasicImage(grayscale=1)'" src="images/marcas/<?php echo"$line[logotipo_marca]"?>"/>
</div>

Será el div que forma parte del while?
  #15 (permalink)  
Antiguo 27/03/2012, 13:36
 
Fecha de Ingreso: febrero-2012
Mensajes: 6
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Panino tendrás idea que es lo que estoy haciendo mal, porque no me funciona tu codigo... gracias de antemano por tu ayuda!

F
  #16 (permalink)  
Antiguo 27/03/2012, 13:57
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Te digo lo mismo: sin ver tu código sólo se puede adivinar (el fragmento de código que mostraste no alcanza, además de tener php). Lo más probable es que no estés inicializando correctamente todas las imágenes. Si te fijás en el código, cuando se carga la página pasa esto:
Código PHP:
toGrayScale(document.getElementById('im')); 
Eso es para una imagen en particular, la que tiene como id a "im". Es posible que no estés usando esa función para todas tus imágenes. Incluso, por lo poco que se ve de tu código pareciera que las imágenes tienen todas el mismo id. La idea es que entiendas cómo funciona y no tratar de hacerlo funcionar dando manotazos al azar.
Si algo no entendés del código, con gusto intentaré explicártelo.
  #17 (permalink)  
Antiguo 27/03/2012, 15:40
 
Fecha de Ingreso: febrero-2012
Mensajes: 6
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Gracias por tu tiempo Panino, talvez no puse todo el codigo, perdona pero ahora te lo muestro, el id si lo estoy usando bien y como es un ciclo de repeticion no se lo asigno a cada imagen por separado si no a una sola y el ciclo lo repite el numero de resultados que traiga de regreso, lo puedes chequear.

<?php $query = "SELECT * FROM tabla order by name" ;
$result = mysql_query($query, $con);
if(!$result){
die(mysql_error());
}

if(mysql_num_rows($result)>0){
while($line=mysql_fetch_array($result)){
?>

<div style="float:left; width:48px; height:48px; margin-left:15px; text-align:center;">
<img id="im" onmouseover="this.src='<?php print "$line[imagen]"?>';this.style.filter=''" onmouseout="this.src=this.gs || '<?php print "$line[imagen]"?>';this.style.filter='progid:DXImageTransform.Mi crosoft.BasicImage(grayscale=2)'"
src="<?php print "$line[imagen]"?>" />
</div>

<?php
\\Cierro while
}
\\Cierro condicion
}
?>

Ya comprendi como funciona tu codigo pero no comprendo porque solo funciona en una imagen y el resto no, si pudes ayudarme te agradezco mucho.

Si no es posible, gracias igual!
  #18 (permalink)  
Antiguo 27/03/2012, 15:52
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: ¿Rollover de imagen de blanco y negro a color, como se hace?

Todas tus imágenes tienen el mismo id, fijate en el código fuente. Agregales un número o algo que diferencie el id:
Código PHP:
<img id="im<?php echo $algo++; ?>"
Y vas a tener que repetir el ciclo en el onload, como te dije antes, para convertir a escala de grises cada una de las imágenes (im1, im2, im3)
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 05:50.