JS-从base64代码获取图像的宽度和高度


Answers:


146
var i = new Image(); 

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

i.src = imageData; 

太棒了,花一半的时间检查大小,非常感谢!
2013年

5
太糟糕了,这是一个异步过程。
科恩·达门

@CoenDamen是的。我也需要同步过程。
1.21吉瓦,

您很棒
Valdrinium '17

12
我还要补充一点,这里的顺序非常重要。如果以其他方式(在加载前使用src)进行此操作,则可能会错过该事件。请参阅:stackoverflow.com/a/2342181/4826740
maxshuty

34

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

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)

1
它仍然是异步的。仅使用语法糖。
gustavopch '19

'naturalWidth'和'naturalHeight'是更好的选择,不是吗?stackoverflow.com/questions/28167137/…–
Crashalot

6

我发现,使用.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/


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

在这里测试: FIDDLE

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


另一个没有按照gp的分析工具添加到dom的小提琴: 这里


var i = new Image(); i.src = imageData; setTimeout(function(){alert(“ width:” + i.width +“ height:” + i.height);},100);
gp。

由于jsfiddle的性质,这仅是需要解决的问题,您可以将onLoad更改为onDomReady来解决最初的0宽度和高度问题。代码假定您在工作中已加载文档的某处调用此函数。
Desu 2013年

猜测您的观点是,您无需在dom中添加任何内容即可获得宽度和高度。将修改答案以反映您的建议。
Desu 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.