2012-03-09 13 views
8

Ho un'immagine sulla pagina che è stata ridimensionata per adattarsi a un div, ad esempio 400x300. Come posso ottenere l'intera dimensione dell'immagine (~ 4000x3000) in jQuery? .width() e .height() sembrano solo restituire la dimensione corrente dell'immagine.Ottieni l'immagine completa in javascript/jquery

+0

grazie .. non ha visto. – emc

risposta

21

immagini hanno naturalWidth e naturalHeight proprietà che contengono la larghezza effettiva, non modificato e l'altezza dell'immagine, cioè le dimensioni reali l'immagine, non ciò che il CSS lo imposta.

Si sarebbe ancora aspettare per l'immagine da caricare se

$('#idOfMyimg').on('load', function() { 
    var height = this.naturalHeight, 
     width = this.naturalWidth; 
}); 

Un'altra opzione potrebbe essere quella di creare una nuova immagine con lo stesso file come sorgente, e ottenere le dimensioni da che, fino a quando non è mai aggiunto al DOM, gli stili non esterni influenzeranno lo

var img = new Image(); 

img.onload = function() { 
    var height = this.height, 
     width = this.width; 
} 
img.src = $('#idOfMyimg').attr('src'); 

FIDDLE

+0

wow ... killer answer – emc

+0

soluzione rapida e perfetta senza sacrificare performace: D – Erick

1

È possibile farlo con un oggetto Image che contiene lo stesso file di origine come:

var preloader = new Image(); 
preloader.src = 'path/to/my/file.jpg'; 

preloader.onload = function(){ 
var height = preloader.height; 
var width = preloader.width; 
} 
-2

Prova questo:

var pic = $ ("img")

// necessità per rimuoverli, nel caso in cui img-elemento abbia impostato larghezza e altezza pic.removeAttr ("width"); pic.removeAttr ("altezza");

var pic_real_width = pic.width(); var pic_real_height = pic.height();

+0

restituisce ancora la dimensione attuale! – emc

+0

Non funziona: http://jsfiddle.net/kCN2x/ – m90

+0

Ho modificato la mia risposta, ora funzionerà con controllo a ur [jsfiddle.net/kCN2x] link – Java

4

È possibile clonare l'immagine, rimuovere gli attributi di altezza e larghezza, aggiungerla al corpo e ottenere la larghezza e la dimensione prima di rimuoverla.

jsFiddle demo è qui: http://jsfiddle.net/58dA2/

Codice è:

$(function() { 
    var img = $('#kitteh'); // image selector 
    var hiddenImg = img.clone().css('visibility', 'hidden').removeAttr('height').removeAttr('width').appendTo('body'); 
    $('#height').text(hiddenImg.height()); 
    $('#width').text(hiddenImg.width()); 
    hiddenImg.remove();    
});​ 
+1

oggetti di scena per cat obbligatoria :) :) – emc

+0

@npc Thx! Non sono nemmeno un "gatto-persona" ma quando sono a Roma ... :-) – GregL

+0

+ per un'altra soluzione diversa :) – fider