2013-07-21 17 views

答えて

86
var i = new Image(); 

i.onload = function(){ 
alert(i.width+", "+i.height); 
}; 

i.src = imageData; 
+0

ちょうど素晴らしい、サイズを確認するために半分の時間がかかります、ありがとうございます! – bombastic

+2

これは非同期プロセスであることも悪いです。 –

+0

@CoenDamen yep。私は同期プロセスも必要です。 –

3

その画像で非表示の<img>を作成し、jquery .width()とを使用します。ここでは、高さ()

$("body").append("<img id='hiddenImage' src='"+imageData+"' />"); 
var width = $('#hiddenImage').width(); 
var height = $('#hiddenImage').height(); 
$('#hiddenImage').remove(); 
alert("width:"+width+" height:"+height); 

テスト: FIDDLE

画像が最初に隠された作成されません。作成されたら、幅と高さを取得してから削除します。この場合、大きな画像では表示が非常に短くなる可能性があります。この場合、別のコンテナにイメージをラップし、そのコンテナをイメージ自体ではなく非表示にする必要があります。


GPあたりとしてDOMに追加しません別のフィドルのANSER:。 HERE

+0

はそんなにあなたに感謝、することができますあなたは私に少しの例を示しますか? – bombastic

+0

フィドルで編集しました – Desu

+0

あなたには今、それは明確です:D – bombastic

2

私は.naturalWidthと.naturalHeightを使用すると、最良の結果を持っていたことが分かりました。

var img = new Image(); 

img.onload = function() { 
    var imgWidth = img.naturalWidth, 
     imgHeight = img.naturalHeight; 
}; 

これは現代のブラウザでのみサポートされています。同期の使用のためにhttp://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/

0

ちょうどこのような約束にそれをラップ:

function getImageDimensions(file) { 
    return new Promise (function (resolved, rejected) { 
    var i = new Image() 
    i.onload = function(){ 
     resolved({w: i.width, h: i.height}) 
    }; 
    i.src = file 
    }) 
} 

、あなたが使用することができ、同期のコーディングスタイルでデータを取得するために待っています:

var dimensions = await getImageDimensions(file) 
関連する問題