2013-07-21 22 views

Odpowiedz

86
var i = new Image(); 

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

i.src = imageData; 
+0

Po prostu niesamowite, to zajmuje połowę czasu, aby sprawdzić rozmiar, dziękuję bardzo! – bombastic

+2

Szkoda, że ​​jest to proces asynchroniczny. –

+0

@CoenDamen yep. Potrzebuję również procesu synchronicznego. –

3

Utwórz ukryty <img> z tym obrazem, a następnie użyj jquery .width() i. Wysokość()

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

test tutaj: FIDDLE

Obraz nie jest stworzony początkowo ukryty. zostanie utworzony, wtedy otrzymasz szerokość i wysokość, a następnie ją usuniesz. Może to spowodować bardzo krótką widoczność na dużych obrazach, w tym przypadku musisz zawinąć obraz w innym pojemniku i uczynić ten pojemnik ukrytym, a nie sam obraz.


Innym Fiddle, że nie dodaje się dom według GPS Anser. HERE

+0

Dziękuję bardzo, może pokazujesz mi przykładowy przykład? – bombastic

+0

edytowane za pomocą skrzypiec – Desu

+0

dziękuję człowiekowi, teraz jest jasne: D – bombastic

0

synchronicznych zastosowanie tylko owinąć go do obietnicy, jak ta:

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 
    }) 
} 

następnie można wykorzystać poczekać, aby uzyskać dane w synchronicznym stylu Kodowanie:

var dimensions = await getImageDimensions(file)