Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema al recuperar el width de una imagen

Estas en el tema de Problema al recuperar el width de una imagen en el foro de Javascript en Foros del Web. Hola amigos, tengo un problema al capturar el width y/o height de una imagen, detecte el problema pero no se como solucionarlo. Código: var newimage ...
  #1 (permalink)  
Antiguo 12/02/2013, 19:42
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 19 años, 4 meses
Puntos: 145
Problema al recuperar el width de una imagen

Hola amigos, tengo un problema al capturar el width y/o height de una imagen, detecte el problema pero no se como solucionarlo.

Código:
var newimage = new Image();
newimage.src = $("#imagen").attr("title");
var wImg = newimage.width;
var hImg = newimage.height;
En un principio pensé que el problema podía estar en $("#imagen").attr("title"); y que venia vacio, pero haciendo un poco de debug con la consola de firebug, noté que no era el problema.

El problema es simplemente que me devuelve el valor cuando le da la gana. Me di cuenta de algo, y es que las primeras pruebas que hice siempre me funcionó porque las imágenes eran pequeñas en cuanto a peso, eran fotos livianas, pero resulta que ahora han subido fotos de aprox 1600px de ancho, por lo que las fotos ya no son muy livianas que digamos. Por deducción digo que es por el peso y que el navegador no siempre logra cachear la imagen.

Pero no se como solucionarlo :(

Toda idea será bienvenida.

gracias.
__________________
http://chicho.ninja yiaaaa
  #2 (permalink)  
Antiguo 13/02/2013, 00:46
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: Problema al recuperar el width de una imagen

Hola:

Hay dos opciones, pero una de ellas es menos fiable (aunque teóricamente correcta)... usar el evento load para averiguar que se haya cargado la imagen:

newimagen.onload = function() {
wImg = newimagen.width;
//...
}

La otra opción es consultar el atributo complete, que se activa cuando los datos son fiables.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 13/02/2013, 18:11
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 19 años, 4 meses
Puntos: 145
Respuesta: Problema al recuperar el width de una imagen

gracias master, vamos a leer sobre lo que me dices.

Saludos y gracias nuevamente.
__________________
http://chicho.ninja yiaaaa
  #4 (permalink)  
Antiguo 13/02/2013, 19:55
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: Problema al recuperar el width de una imagen

Cita:
Iniciado por chichote Ver Mensaje
gracias master, vamos a leer sobre lo que me dices.

Saludos y gracias nuevamente.
Tu código presta a confusiones, estas creando una imagen dinamicamente con js, pero en el src le asignas como fuente el title de un elemento de id #imagen, que supongo NO es la imagen que creas, si no hay title, no hay new Image(), y si efectivamente #imagen es la imagen de la que querés obtener las dimensiones, deja de tener sentido el new Image(), a ver si con este ejemplo me explico

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>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  7. <script type="text/javascript">
  8. //<![CDATA[
  9.  
  10. var img = new Image();
  11. img.onload = function() {
  12.  alert('método 1: ' + this.width + 'x' + this.height);
  13. }
  14. img.src = 'fuente_ff.jpg';
  15.  
  16. function metodo2(){
  17. var ancho = $("#uno").width(); 
  18. var alto = $("#uno").height(); 
  19. alert('método 2: ' + ancho + 'x' + alto);
  20. }
  21.  
  22. function metodo3(){
  23. var img = document.getElementById('uno');
  24. //or however you get a handle to the IMG
  25. var w = img.clientWidth;
  26. var h = img.clientHeight
  27. alert('método 3: ' +w + 'x' + h);
  28. };
  29. //]]>
  30.  
  31.  
  32. </head>
  33.     <p>método 1 - se crea la imagen dinamicamente con js y tras la carga se detectan ancho y alto</p>
  34.     <button onclick="metodo2()">método 2 - jQuery</button><br />
  35.     <button onclick="metodo3()">método 3 - Js puro</button><br />
  36. <img src="fuente_ff.jpg" alt="" id="uno"/>
  37. </body>
  38. </html>


Con el primer método, aún quitando el tag <img> lo detectarías.
Me explico?

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 18/02/2013, 07:52
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 19 años, 4 meses
Puntos: 145
Respuesta: Problema al recuperar el width de una imagen

Gracias por los ejemplos muchachos, la razon de por que cargar el src desde el atributo title de otro elemento, es porque es básicamente un select que contiene una lista con los nombres de varias imagenes.

Ya lo he solucionado, gracia.

Saludos.
__________________
http://chicho.ninja yiaaaa

Etiquetas: funcion, width
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 14:34.