2012-03-09 17 views
8

divに収まるようにサイズが変更されたページ上の画像、たとえば400x300があります。 jQueryでイメージの全サイズ(〜4000x3000)を取得するにはどうすればよいですか? .width()と.height()は画像の現在のサイズを返すように見えます。javascript/jqueryで画像のフルサイズを取得

+0

感謝に影響を与えます。 – emc

答えて

21

画像は、画像の実際の、非改変の幅と高さを含んでいnaturalWidthnaturalHeight性質を持っているの本当の大きさ、すなわちそのイメージは、CSSがそれを設定するものではありません。

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

は別のオプションは、ソースと同じファイルを使用して新しいイメージを作成し、それから寸法を取得することですけれども

一つはまだ限り、ロードするために画像を待たなければならないだろうそれがDOMに追加されたことがないですが、外部のないスタイルは...見なかったこと

var img = new Image(); 

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

FIDDLE

+0

うわー...キラーの答え – emc

+0

パフォーマンスを犠牲にすることなく、すばやく完璧なソリューション:D – Erick

1

あなたが好き同じソースファイルを保持Imageオブジェクトでこれを行うことができます。

VAR PIC = $( "IMG")

//必要性:これを試してみてください

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

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

をimg-elementが幅と高さを設定している場合にこれらを削除する pic.removeAttr( "width"); pic.removeAttr( "height");

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

+0

はまだ現在のサイズを返します! – emc

+0

Not working:http://jsfiddle.net/kCN2x/ – m90

+0

私は自分の答えを編集しました。今では、ur [jsfiddle.net/kCN2x]リンク – Java

4

イメージを複製し、高さと幅の属性を削除し、本文に追加して幅とサイズを取得してから削除することができます。

jsFiddleデモはここにある:http://jsfiddle.net/58dA2/

コード:

$(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

の義務的な猫のための小道具でplzチェックを行います:) – emc

+0

@npc Thx!私も "猫人"ではないが、ローマ時...: – GregL

+0

+別の別の解決策:) – fider