2011-09-16 12 views
6

¿Es posible obtener el alto y el ancho de una imagen en el sistema de archivos utilizando JavaScript (es decir, una imagen que no forma parte del DOM)? ¿O tendría que usar JavaScript para inyectar la imagen en el DOM y tomar las dimensiones de esa manera?¿Es posible obtener el alto/ancho de una imagen que no está en el DOM?

Lo pido porque estoy escribiendo un método de JavaScript para representar un componente de IU sobre la marcha generado por Raphaël, que toma tres rutas de imagen como parte de los parámetros del método. Estos se utilizan luego para representar el componente UI antes mencionado, y necesito las dimensiones de las imágenes para fines de posicionamiento.

Gracias de antemano.

Respuesta

9

creo, siempre y cuando la imagen se haya cargado se puede agarrar la anchura y la altura - no debería tener que inyectarlo en el DOM sin embargo. Por ejemplo:

var tmp = new Image(); 
tmp.onload = function() { 
    console.log(tmp.width + ' x ' + tmp.height); 
} 
tmp.src = 'http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=4'; 
+0

Obtengo el ancho y alto en console.log, pero cuando intento JSON.stringify(), no se imprime. El objeto se ve perfecto en la consola, pero no puedo recuperarlo – user2734550

-5

¿Es posible obtener el alto y el ancho de una imagen en el sistema de archivos utilizando JavaScript (es decir, una imagen que no forma parte del DOM)?

  • Sin

O tendría que usar JavaScript para inyectar la imagen en el DOM y agarrar las dimensiones de esa manera?

+2

Sí, eso simplemente no es cierto. Ver todas las demás respuestas para más detalles. – Malvolio

+0

Creo que lo que dije específicamente (acceder al sistema de archivos) no es posible, pero debería haber dicho la URL. –

1

Puede descargar la imagen con el código:

var img=new Image(),imgWidth,imgHeight; 
img.onerror=img.onload=function(ev) { 
    ev=ev||event; 
    if(ev.type==="error") { 
    imgWidth=imgHeight=-1; // error loading image resourse 
    } 
    else { 
    imgWidth=this.width; // orimgWidth=img.width 
    imgHeight=this.height; // imgHeight=img.height 
    } 
} 
img.src="url_to_image_file"; 
4

No necesariamente se puede llegar a "el sistema de archivos", pero se puede hacer esto:

v = new Image(); 
v.onload = function() { 
    alert("size: " + String(v.width) + 'x' + String(v.height)); 
}; 
v.src = "http://www.gravatar.com/avatar/96269f5a69115aa0e461b6334292d651?s=32&d=identicon&r=PG"; 

¿LE cuenta eso como "agregar al DOM"?

Cuestiones relacionadas