110

I have a base64 img encoded that you can find here. How can I get the height and the width of it?

4

4 回答 4

173
var i = new Image(); 

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

i.src = imageData; 
于 2013-07-21T18:06:00.693 回答
48

对于同步使用,只需将其包装成这样的承诺:

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

然后您可以使用 await 以同步编码样式获取数据:

var dimensions = await getImageDimensions(file)
于 2018-03-07T19:21:36.437 回答
20

我发现使用.naturalWidth.naturalHeight获得了最好的结果。

const img = new Image();

img.src = 'https://via.placeholder.com/350x150';

img.onload = function() {
  const imgWidth = img.naturalWidth;
  const imgHeight = img.naturalHeight;

  console.log('imgWidth: ', imgWidth);
  console.log('imgHeight: ', imgHeight);
};

文件:

这仅在现代浏览器中受支持。http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/

于 2014-11-14T16:15:13.513 回答
2

使用该图像创建一个隐藏<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);

在这里测试: 小提琴

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


根据 gp. 的分析器,另一个没有添加到 dom 的小提琴: 这里

于 2013-07-21T17:26:21.967 回答