2012-05-07 22 views
11

Tengo una página llena de miniaturas, redimensionado con css a 150x150, y cuando hago clic en una miniatura, la página se atenúa, y la imagen se muestra en sus tamaños reales.Obtener tamaño de imagen real, después de cambiar el tamaño

Actualmente, tengo que crear manualmente una matriz que incluye la altura real de todas las imágenes. Para resolver un problema de diseño + menos operación manual de mi galería, necesito obtener la altura real de una imagen, después de redimensionarla (CSS).

me trataron:

var imageheight = document.getElementById(imageid).height; 

Y:

var imageheight = $('#' + imageid).height(); 

Pero ambos devuelven el atributo asignado 150px con el CSS. ¿Como puedo resolver esto? Gracias

+0

posible duplicado de http://stackoverflow.com/ preguntas/7682772/get-image-size-after-resize-javascript –

+2

¿Está cargando todas las imágenes a tamaño completo en lugar de hacer las miniaturas adecuadas? Ouch ... – Guffa

+0

Estoy cargando la imagen a tamaño completo y mostrándola cuando se hace clic en una miniatura. – Novak

Respuesta

14

Una forma de hacerlo es crear un objeto de imagen separado.

function getImageDimensions(path,callback){ 
    var img = new Image(); 
    img.onload = function(){ 
     callback({ 
      width : img.width, 
      height : img.height 
     }); 
    } 
    img.src = path; 
} 

getImageDimensions('image_src',function(data){ 
    var img = data; 

    //img.width 
    //img.height 

}); 

De esta manera, usará la misma imagen pero no la del DOM, que tiene dimensiones modificadas. Las imágenes en caché, hasta donde yo sé, se reciclarán utilizando este método. Así que no te preocupes por las solicitudes HTTP adicionales.

+0

Gracias @Joseph, funciona ahora. – Novak

15

que tienen los KWS 'naturales' para ayudarle hacia fuera:

con JS:

var imageheight = document.getElementById(imageid).naturalHeight; 

o con jQuery

var imageheight = $('#' + imageid).naturalHeight; 
+0

excelente respuesta, gracias – imkost

+1

para IE9 + y cualquier otro navegador importante, estas propiedades son válidas. ¡Esta es una buena respuesta! Alguien probablemente envolvió un plugin jQuery para esto. Si no, esto podría ser interesante. –

Cuestiones relacionadas