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){
        ......


PIPIONE
浏览 434回答 1
1回答

神不在的星期二

imgitem.forEach(function(item){&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;img&nbsp;=&nbsp;new&nbsp;Image(); &nbsp;&nbsp;&nbsp;&nbsp;img.src&nbsp;=&nbsp;item.url; &nbsp;&nbsp;&nbsp;&nbsp;img.onload&nbsp;=&nbsp;function(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;w&nbsp;=&nbsp;img.width,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h&nbsp;=&nbsp;img.height;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(item,&nbsp;img,&nbsp;w,&nbsp;h);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(h/w&nbsp;>=&nbsp;1.5){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} });在循环的时候需要重新定义img变量,否则会一直共享一个变量,因此在循环的时候会存在Image.src还没有来得及初始化的问题,自然获取不到width和height。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript