Image()对象实例化获取图片宽高问题

关键代码如下。通过循环去创建image对象,但是循环获取图片宽高的时候有部分图片的宽高为0,并且是随机出现不同的图片宽高为0.求解。



    var i = 0;
    var len = imgitem.length;
    for( i = 0; i < len ; i++){
        imgSrc = imgitem[i].url;
        
        imgObj = new Image();
        imgObj.src = imgSrc;
        imgObj.onload = function(){
            console.log(imgObj.width);
            imgObjW = imgObj.width;
            imgObjH = imgObj.height;
        };
        
        /*限制最大height*/
        if(imgObjH / imgObjW >= 1.5){
        ......
阅读 6.4k
3 个回答
imgitem.forEach(function(item){
    var img = new Image();
    img.src = item.url;
    img.onload = function(){
        var w = img.width, 
            h = img.height;

        console.log(item, img, w, h);

        if(h/w >= 1.5){
                //...
        }
    }
});

在循环的时候需要重新定义img变量,否则会一直共享一个变量,因此在循环的时候会存在Image.src还没有来得及初始化的问题,自然获取不到width和height。
已解决。

使用image.naturalWidthimage.naturalHeight

谢邀!
八成是图片没有加载完
用img.onload试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题