use*_*591 33 javascript image loading dimensions
我已经了解了图像完全加载后获取图像尺寸的各种方法,但是一旦刚开始加载,是否可以获得任何图像的尺寸?
我没有通过搜索找到太多(这让我相信它不可能),但浏览器(在我的情况下是Firefox)显示我在标题后面的新标签中打开的任何图像的尺寸它刚开始加载图像让我希望实际上有一种方法,我只是错过了正确的关键字来找到它.
kat*_*ugh 43
你是对的,可以在完全加载之前获得图像尺寸.
这是一个解决方案(演示):
var img = document.createElement('img');
img.src = 'some-image.jpg';
var poll = setInterval(function () {
if (img.naturalWidth) {
clearInterval(poll);
console.log(img.naturalWidth, img.naturalHeight);
}
}, 10);
img.onload = function () { console.log('Fully loaded'); }
Run Code Online (Sandbox Code Playgroud)
ale*_*emb 11
以下代码在可用时立即返回宽度/高度.用于测试将abc123
图像源更改为任何随机字符串以防止缓存.
还有一个JSFiddle演示.
<div id="info"></div>
<img id="image" src="https://upload.wikimedia.org/wikipedia/commons/d/da/Island_Archway,_Great_Ocean_Rd,_Victoria,_Australia_-_Nov_08.jpg?abc123">
<script>
getImageSize($('#image'), function(width, height) {
$('#info').text(width + ',' + height);
});
function getImageSize(img, callback) {
var $img = $(img);
var wait = setInterval(function() {
var w = $img[0].naturalWidth,
h = $img[0].naturalHeight;
if (w && h) {
clearInterval(wait);
callback.apply(this, [w, h]);
}
}, 30);
}
</script>
Run Code Online (Sandbox Code Playgroud)