2013-07-21 59 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

图像不最初创建隐藏的。它被创建,然后你得到宽度和高度,然后删除它。在这种情况下,这可能会在大图像中导致非常短的可见性,因此您必须将图像包装在另一个容器中,并且隐藏该容器而不是图像本身。


另一个小提琴不添加到DOM按的GP雁: HERE

+0

太感谢你了,能你向我展示一个小例子plase? – bombastic

+0

用小提琴编辑 – Desu

+0

谢谢你现在很清楚:D – bombastic

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) 
相关问题