Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Carga de img

Estas en el tema de Carga de img en el foro de Javascript en Foros del Web. Buenas !! Os cuento mi problema, tengo una cámara ip que me sube una img cada x segundos a mi servidor y me gustaría publicarla ...
  #1 (permalink)  
Antiguo 17/03/2013, 05:58
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Carga de img

Buenas !!

Os cuento mi problema, tengo una cámara ip que me sube una img cada x segundos a mi servidor y me gustaría publicarla en mi web, pero la idea es cuando se vayan cargando las nuevas img no se aprecie la precarga.

Lo he probado con ASP pero si se nota la carga de la nueva img.

La idea es que el usuario vea las img como si fuera un video, sin notar que son img independientes.

Alguna idea?

Muchísimas gracias !!
  #2 (permalink)  
Antiguo 17/03/2013, 06:57
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Carga de img

No digamos tanto como un video, pensá que un video tiene habitualmente entre 23/30 cuadros por segundo y la captura de foros y su guardados en el disco va a insumir bastante más tiempo.
Ahora en cuanto a evitar el parpadeo, bastaría que muestres la imagen solo cuando esta se cargó
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Web Cam</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. /* script */
  10. var timer;
  11. function camara(){
  12. var fecha = new Date();
  13. var ImagenPrueva = new Image();
  14. ImagenPrueva.src = "mapa.jpg?" + fecha.getTime();
  15. ImagenPrueva.onload = function(){
  16. document.getElementById('camara').src = this.src;
  17. }
  18. }
  19.  
  20. window.onload= function(){
  21.     timer = setInterval(camara, 5000);
  22. }
  23. //]]>
  24. </head>
  25. <img src="mapa.jpg" alt="camara" widht="400" height= "440" id="camara" />
  26. </div>
  27. </body>
  28. </html>

Otra cosa a considerar es como trabaja tu cámara, algunas almacena la foto siempre con el mismo nombre, otras permiten guardar varias imágenes distintas. En mi caso usa el mismo nombre y se agrega el parametro fecha.getTime() para hacer de src un nombre único y evitar recuperar una imagen de la cache en lugar de la última generada
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 17/03/2013 a las 07:22
  #3 (permalink)  
Antiguo 17/03/2013, 07:11
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Carga de img

Gracias !!! Funciona perfecto !!
  #4 (permalink)  
Antiguo 19/03/2013, 04:46
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Carga de img

Hola de nuevo, estaba pensando en como mejorar esto para que parezca lo mas real posible.

Cuando hay un número alto de visitas, hay veces que la img no carga correctamente o se nota la carga.

Se me ha ocurrido, subir las img al server y guardar la ruta en una base de datos con 60 registros, estos registros serán las 60 imágenes que habrá en un minuto. La idea es que estas imágenes vayan desfasadas un minuto y que cuando un usuario vea la imagen, realmente este viendo las que ya esten cargadas en el server y no las que esten por cargar.

Como podemos modificar el script para que cargue img con distinto nombre? Este nombre será secuencial, por ejemplo camara01, camara01 ... camara 59

Gracias y saludos
  #5 (permalink)  
Antiguo 19/03/2013, 06:50
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Carga de img

Cita:
Iniciado por namorha Ver Mensaje
Hola de nuevo, estaba pensando en como mejorar esto para que parezca lo mas real posible.

Cuando hay un número alto de visitas, hay veces que la img no carga correctamente o se nota la carga.

Se me ha ocurrido, subir las img al server y guardar la ruta en una base de datos con 60 registros, estos registros serán las 60 imágenes que habrá en un minuto. La idea es que estas imágenes vayan desfasadas un minuto y que cuando un usuario vea la imagen, realmente este viendo las que ya esten cargadas en el server y no las que esten por cargar.

Como podemos modificar el script para que cargue img con distinto nombre? Este nombre será secuencial, por ejemplo camara01, camara01 ... camara 59

Gracias y saludos
Si los nommbres de las imágenes ya están predefinidos, podrías hacer algo como esto

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>timers</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. var i=1;
  10.  
  11. function ciclo(){
  12. var fecha = new Date();
  13. var ImagenPrueva = new Image();
  14. ImagenPrueva.src = 'camara'+i+'.jpg?' + fecha.getTime();
  15. ImagenPrueva.alt = 'camara'+i+'.jpg';
  16. ImagenPrueva.onload = function(){
  17. document.getElementById('camara').src = this.src;
  18. }
  19.           i++;
  20.          if(i > 10){
  21.            i = 1;
  22.            }
  23. }
  24.  
  25. window.onload= function(){
  26. var f = setInterval('ciclo()',1000); // ajustar el tiempo
  27. }
  28. //]]>
  29. </head>
  30. <img src="camara1.jpg" alt="camara1.jpg" width="400" height= "440" id="camara" />
  31. </body>
  32. </html>

Pero aqui se te presenta otro problema, ya que habría que sincronizar de algún modo, el tiempo en que cada imagen tarda en subir al servidor(el cual no se puede conocer con exactitud), con el intervalo de tiempo en que el ciclo se repite, es posible que al llegar a la imagen 60, la 1 halla cambiado, pero la 2 no. habría que incrementar el tiempo de refresco, pero entonces ya se perdería el efecto de animación.
Si se me ocurre otra cosa te aviso, pero sin poder probar en tiempo real como trabaja tu camara y la subida de archivos, no es facil
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 19/03/2013, 08:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Carga de img

Hola, yo pensé en eso, por eso te decía lo de almacenar la ruta o el nombre de la imagen en la base de datos y así asegurarnos que esa img esta en el server.

Con esto, daría igual que estén en orden. Lo suyo es que el script haga consulta a la base de datos o que lea los 60 últimos registros.
  #7 (permalink)  
Antiguo 19/03/2013, 10:24
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Carga de img

Es más o menos lo mismo, el tema pasa por verificar que la imagen ya esté en el disco del servidor.
Se me ocurre una idea, pero habría que desarrollarla,
tus imágenes se guardan todas en una misma carpeta,
esta carpeta es leída con php con readdir, ordenas lo archivos x fecha y creas un array de imagenes para mostrarlos con javascript, primero la más vieja y por último la mas nueva.
Puede que en la sucesión (por lo que comenté de los tiempos de subida) alguna imagen sea pasada por alto, epro el orden va a ser el correcto.

De todas maneras, hay algo que no se altera respecto de la primer solución que te propuse, si vos hacés
Código:
ImagenPrueva.onload = function(){
document.getElementById('camara').src = this.src;
}
no debería haber "espacios" en blanco durante la presentación.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 05/04/2013, 06:38
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Carga de img

Hola, si quieres te puedo pasar por privado la url de la cam y así puedes trastearla.

Etiquetas: img
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 06:28.