2013-07-21 13 views

Antwort

86
var i = new Image(); 

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

i.src = imageData; 
+0

einfach genial, es dauert die Hälfte der Zeit, um die Größe zu überprüfen, vielen Dank! – bombastic

+2

zu schlecht, dass dies ein asynchroner Prozess ist. –

+0

@CoenDamen yep. Ich brauche auch einen synchronen Prozess. –

3

Erstellen Sie ein verstecktes mit diesem Bild und verwenden Sie dann jquery .width() und. Höhe()

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

Test hier: FIDDLE

Das Bild wird zunächst nicht verborgen erstellt. es wird erstellt, dann erhalten Sie Breite und Höhe und dann entfernen Sie es. Dies kann zu einer sehr kurzen Sichtbarkeit in großen Bildern führen. In diesem Fall müssen Sie das Bild in einen anderen Container einbinden und den Container nicht das Bild selbst verbergen.


Ein weiterer Fiddle, die nicht als pro gp Anser zu dom hinzufügt. HERE

+0

Sie so viel danken, können du zeigst mir ein kleines beispiel plase? – bombastic

+0

bearbeitet mit Geige – Desu

+0

danke Mann jetzt ist es klar: D – bombastic

0

Für synchrone Anwendung wickeln nur in ein Versprechen wie folgt aus:

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

dann können Sie warten, um die Daten in synchronen Kodierung der Art zu erhalten:

var dimensions = await getImageDimensions(file) 
Verwandte Themen