Foros del Web » Programando para Internet » Javascript »

Comprobar carga de imagen

Estas en el tema de Comprobar carga de imagen en el foro de Javascript en Foros del Web. Hola phperos. en mi pagina web tengo una imagen. Como puedo decirle en php o comprobar si esa imagen se ha cargado o no, si ...
  #1 (permalink)  
Antiguo 18/08/2008, 10:59
Avatar de webelgrillo  
Fecha de Ingreso: marzo-2008
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 0
Comprobar carga de imagen

Hola phperos.

en mi pagina web tengo una imagen.

Como puedo decirle en php o comprobar si esa imagen se ha cargado o no, si la imagen se ha cargado que ejecute una accion pero si la imagen no se cargo ejecuta otra accion..

ayudenme y como es el script gracias....
  #2 (permalink)  
Antiguo 18/08/2008, 11:08
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 17 años, 3 meses
Puntos: 20
Respuesta: Comprobar carga de imagen

Como se ha cargado en el navegador? Eso unicamente lo puedes saber con Javascript.
  #3 (permalink)  
Antiguo 18/08/2008, 11:08
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, 6 meses
Puntos: 834
Respuesta: Comprobar carga de imagen

Con php no podés hacer esa comprobación, ya que se trata de un proceso que ocurre en el navegador, no en el servidor. Necesitás javascript u otra herramienta del lado del cliente para eso .
Concretamente, en javascript podrías usar el evento onload del tag img.
  #4 (permalink)  
Antiguo 18/08/2008, 11:18
Avatar de webelgrillo  
Fecha de Ingreso: marzo-2008
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Comprobar carga de imagen

OK gracias ya entendi que en php no se podra pero alguien que me pueda ayudar en el codigo con javascript o que me digan una pagina de referencia gracias....
  #5 (permalink)  
Antiguo 18/08/2008, 11:22
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, 6 meses
Puntos: 834
Respuesta: Comprobar carga de imagen

Código PHP:
<script>
function 
loquesea(){
alert('hola');
}
</script>
<img src="algo.jpg" onload="loquesea()" /> 
  #6 (permalink)  
Antiguo 18/08/2008, 11:44
Avatar de webelgrillo  
Fecha de Ingreso: marzo-2008
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Comprobar carga de imagen

Ok gracias por tu ayuda eres super.

ya ok ya esta todo correcto. no domino mucho java.

quiero que no me mande una ventana energente sino que solo imprima encima de la imagen: "imagen no encontrada" o "imgen no encontrada. asi como un echo.

para luego mdarle mis condiciones en php

<script>
function loquesea(){
alert('hola');
}
</script>
<img src="algo.jpg" onload="loquesea()" />
  #7 (permalink)  
Antiguo 18/08/2008, 12:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Comprobar carga de imagen

Tema trasladado a Javascript.
  #8 (permalink)  
Antiguo 18/08/2008, 12:11
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Respuesta: Comprobar carga de imagen

Lo que te puso Panino5001 fue solo un ejemplo. El secreto está en que el evento onload no se produce si la imagen no existe. Así que puedes tener el texto "Imagen no encontrada" y en el evento onload ocultarlo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 18/08/2008, 12: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, 6 meses
Puntos: 834
Respuesta: Comprobar carga de imagen

En ese caso, quizá te conviene comprobar cuando la imagen no carga correctamente:

Código PHP:
<img src="algo.jpg" onerror="this.parentNode.replaceChild(document.createTextNode('la imagen no existe'),this)" /> 
  #10 (permalink)  
Antiguo 18/08/2008, 12:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
De acuerdo Respuesta: Comprobar carga de imagen

Lo del onerror no lo sabía, gracias Panino5001 por el dato.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 18/08/2008, 12:44
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, 6 meses
Puntos: 834
Respuesta: Comprobar carga de imagen

Pues es una de las cosas que aprendí de tunait ;)
  #12 (permalink)  
Antiguo 18/08/2008, 15:20
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 9 meses
Puntos: 20
Respuesta: Comprobar carga de imagen

proba con AJAX
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #13 (permalink)  
Antiguo 18/08/2008, 16:45
Avatar de webelgrillo  
Fecha de Ingreso: marzo-2008
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Comprobar carga de imagen

quiero hacer en mi pagina que verifique que una imagen ha cargado si no ha cargado que cumpla una funcion, de lo contrario otra.

quiero que se integren java con php

que en java verifique que ha cargado la imagen si ha cargado la imagen que en php imprima "carga de imagen con exito"

pero si la imagen no ha cargado previa verificacion en java que en php me diga "imagen no encontrada"

para yo asi decirle en php que si carga la imagen que cumpla una funcion, pero si no carga que cumpla otra.

aqui pongo la funcion en java que verfica si una imagen ha cargado un ejemplo.
<script>
function loquesea(){
alert('hola');
}
</script>
<img src="algo.jpg" onload="loquesea()" />

ayudenme en este dilema.
  #14 (permalink)  
Antiguo 18/08/2008, 17:43
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, 6 meses
Puntos: 834
Respuesta: Comprobar carga de imagen

Lo primero que tenés que entender es que javascript (no java) y php funcionan en ambientes diferentes y no es posible mezclarlos. No obstante eso, podés hacer que los eventos relacionados con la carga disparen requests a archivos php. Un ejemplo:
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=iso-8859-1" />
<
title>test</title>
<
script>
function 
adjs(url){
    
oldsc=document.getElementById("old_sc");
       if(
oldsc)
            
document.getElementsByTagName('body')[0].removeChild(oldsc);
    
sc=document.createElement('script');
    
sc.id="old_sc";
    
sc.src=url+'&'+Math.random();
    
document.getElementsByTagName('body')[0].appendChild(sc);
    
sc=null;
}
</script> 
</head>

<body>
<img src="algo.jpg" onerror="adjs('NoCarga.php?')" onload="adjs('SiCarga.php?')" />
</body>
</html> 
De esa manera, llamás a los procesos que quieras en cada caso. Ahora bien, si querés que ocurra algo en la página principal (que se escriba algo en algun lado, por ejemplo), podés hacer que tus archivos php generen una salida javascript que actúe sobre algún elemento. Avisanos si necesitás ayuda con esto.
  #15 (permalink)  
Antiguo 18/08/2008, 18:02
Avatar de webelgrillo  
Fecha de Ingreso: marzo-2008
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Comprobar carga de imagen

gracias por tu ayuda.

estoy probando este codigo tan igual como me pasaste pero no me funciona no se en que estoy fallando. ayuda
  #16 (permalink)  
Antiguo 18/08/2008, 18:25
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, 6 meses
Puntos: 834
Respuesta: Comprobar carga de imagen

A ver, vamos con ejemplo commpleto:
Archivo principal:
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=iso-8859-1" />
<
title>test</title>
<
script>
function 
adjs(url){
    
oldsc=document.getElementById("old_sc");
       if(
oldsc)
            
document.getElementsByTagName('body')[0].removeChild(oldsc);
    
sc=document.createElement('script');
    
sc.id="old_sc";
    
sc.src=url+'&'+Math.random();
    
document.getElementsByTagName('body')[0].appendChild(sc);
    
sc=null;
}
</script> 
</head>

<body>
<img id="pp" src="1.jpg" onerror="adjs('NoCarga.php?')" onload="adjs('SiCarga.php?')" />
</body>
</html> 
Archivo SiCarga.php:
Código PHP:
<?php 
echo 'alert("ok")';
?>
Archivo NoCarga.php:
Código PHP:
<?php 
echo 'document.getElementById("pp").parentNode.replaceChild(document.createTextNode("no cargó"),document.getElementById("pp"))';
?>
Subí los 3 a un directorio y ejecutá el primero.
  #17 (permalink)  
Antiguo 18/08/2008, 18:48
Avatar de webelgrillo  
Fecha de Ingreso: marzo-2008
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Comprobar carga de imagen

OK esta ok pero como hago si no quiero que mande esa alerta: echo 'alert ("ok")';

no quiero que me muestre esa ventana emergente si no que me escriba el texto.
  #18 (permalink)  
Antiguo 18/08/2008, 19:07
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, 6 meses
Puntos: 834
Respuesta: Comprobar carga de imagen

Todo depende de dónde necesitás que aparezca el texto. Un ejemplo de SiCarga.php:
Código PHP:
<?php 
echo 'var i=document.createElement("img");i.src=document.getElementById("pp").src;
document.getElementById("pp").parentNode.insertBefore(i,document.getElementById("pp"));document.getElementById("pp").parentNode.replaceChild(document.createTextNode("cargó correctamente"),document.getElementById("pp"))'
;
?>
  #19 (permalink)  
Antiguo 18/08/2008, 19:12
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, 6 meses
Puntos: 834
Respuesta: Comprobar carga de imagen

Y otra manera, agregando un elemento para colocar el texto abajo de la imagen:
Principal:
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=iso-8859-1" />
<
title>test</title>
<
script>
function 
adjs(url){
    
oldsc=document.getElementById("old_sc");
       if(
oldsc)
            
document.getElementsByTagName('body')[0].removeChild(oldsc);
    
sc=document.createElement('script');
    
sc.id="old_sc";
    
sc.src=url+'&'+Math.random();
    
document.getElementsByTagName('body')[0].appendChild(sc);
    
sc=null;
}
</script> 
</head>

<body>
<img id="pp" src="1.jpg" onerror="adjs('NoCarga.php?')" onload="adjs('SiCarga.php?')" />
<div id="status" style="display:none"></div>
</body>
</html> 
SiCarga.php:
Código PHP:
<?php 
echo 'document.getElementById("status").innerHTML="Cargó correctamente";document.getElementById("status").style.display="block"';
?>
  #20 (permalink)  
Antiguo 18/08/2008, 19:13
Avatar de webelgrillo  
Fecha de Ingreso: marzo-2008
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Comprobar carga de imagen

Gracias ok esta todo ok ahora si hare las modificaciones que necesito gracias por tu ayuda.

si tengo mas dudas ya se ha quien buscar gracias....
  #21 (permalink)  
Antiguo 18/08/2008, 19:15
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, 6 meses
Puntos: 834
Respuesta: Comprobar carga de imagen

Bueno, me alegra que te haya servido
  #22 (permalink)  
Antiguo 18/08/2008, 19:44
Avatar de webelgrillo  
Fecha de Ingreso: marzo-2008
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Comprobar carga de imagen

hay algo que quiero que haga en el principal.

que cuando sea NoCarga que me lleve a otra pagina osea que cargue en una nueva ventana, de igual manera si es SiCarga que me mande a la pagina pero en nueva ventana.

que cargue en una ventana nueva.

te pongo el codigo.

<img id="pp" src="1.gif" onerror="adjs('NoCarga.php?a=a')" onload="adjs('SiCarga.php?b=<?=$_b?>&c=<?=$_c?>')" />

ayudame.
  #23 (permalink)  
Antiguo 18/08/2008, 20:07
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, 6 meses
Puntos: 834
Respuesta: Comprobar carga de imagen

Para cargar en la misma página, la salida de tu php debería ser:
Código PHP:
<?php
echo 'window.location="nombrepagina.php"';
?>
Para cargar en una nueva ventana:
Código PHP:
<?php
echo 'window.open("nombrepagina.php")';
?>
  #24 (permalink)  
Antiguo 18/08/2008, 20:42
Avatar de webelgrillo  
Fecha de Ingreso: marzo-2008
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Comprobar carga de imagen

'window.location="nombrepagina.php"'

este mismo codigo quiero manejar

pero en el archivo principal osea en:

<img id="pp" src="1.gif" onerror="adjs('NoCarga.php?')" onload="adjs('SiCarga.php?')" />

para que defrente cargue el archivo php y ejecute sus funciones.

gracias....
  #25 (permalink)  
Antiguo 19/08/2008, 05:28
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Comprobar carga de imagen

Hola:

La verdad que redireccionar dependiendo de una imagen, me suena absurdo... tal vez solo quieras mostrar un mensaje (incluso generado por php...)

Puedes poner los mensajes en capas ocultas y activar la capa que asocies al evento previamente...

primero creo un alias para simplificar código:
function tag(id) {return document.getElementById(id);}

y la chicha:

<img src="1.gif" alt="ejemplo" onerror="tag('error_si').style.display = 'block'"
onload="tag('error_no').style.display = 'block'" />
<div id="error_si" style="display: none" >Error en imagen</div>
<div id="error_no" style="display: none" >Imagen cargada satisfactoriamente</div>

Fíjate que los contenidos puedes crearlos con anterioridad desde php.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #26 (permalink)  
Antiguo 19/08/2008, 06:28
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, 6 meses
Puntos: 834
Respuesta: Comprobar carga de imagen

Sí, la verdad a mi también me resulta absurdo. Para eso, sobre todo si uno maneja pobremente javascript, conviene predecir la carga de la imagen desde el servidor usando herramientas como file_exists, is_readable, o simplemente viendo si getimagesize genera algún error.
  #27 (permalink)  
Antiguo 20/08/2008, 19:51
Avatar de webelgrillo  
Fecha de Ingreso: marzo-2008
Mensajes: 142
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Comprobar carga de imagen

<img id="pp" src="1.gif" onerror="'window.location="error.php?a=loqsea"'" onload="adjs("'window.location="noerror.php?b=loqs ea"')" />


solo quiero adaptar el 'window.location dentro de adjs
  #28 (permalink)  
Antiguo 21/08/2008, 06:11
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Exclamación Respuesta: Comprobar carga de imagen

El window.location no necesitas poner dentro de la función adjs, solo quítalo y listo. Así:
Código PHP:
<img id="pp" src="1.gif" onerror="window.location='error.php?a=loqsea'" onload="window.location='noerror.php?b=loqs ea'" /> 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 00:36.