let img = new Image();
img.src = "myImage.png";
img.decode().then(() => {
let width = img.width;
let height = img.height;
// Do something with dimensions
});
同步使用(在异步函数内):
let img = new Image();
img.src = "myImage.png";
await img.decode();
let width = img.width;
let height = img.height;
// Do something with dimensions
5条答案
按热度按时间t1qtbnec1#
wsxa1bj12#
对于同步使用,只需将其 Package 成如下的promise:
然后你可以使用await来获取同步编码风格的数据:
vq8itlhq3#
我发现使用
.naturalWidth
和.naturalHeight
的效果最好。文件:
只有现代浏览器才支持此功能。http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/
iovurdzv4#
更现代的解决方案是使用
HTMLImageElement.decode()
而不是onload
事件。decode()
返回一个promise,因此可以与await
同步使用。异步用途:
同步使用(在异步函数内):
vjrehmav5#
使用该图像创建隐藏的
<img>
,然后使用jquery .width()和. height()此处测试:FIDDLE
图像最初并不是隐藏的。它被创建,然后你得到宽度和高度,然后删除它。这可能会导致一个非常短的可见性在大图像在这种情况下,你必须 Package 在另一个容器中的图像,并使该容器隐藏,而不是图像本身。
另一个小提琴,不添加到dom作为每个gp.的答案:HERE