var data = {}; var photos = new Array(); var photosList = $api.domAll(".uploadPhotos");//选择所有图片 for (var ii = 0; ii < photosList.length; ii++) { per = $api.attr(photosList[ii], 'src'); trans = api.require('trans');//转成base64的调用函数 trans.decodeImgToBase64({ imgPath : per//图片路径 }, function(ret, err) { if (ret.status) { var dataUrl = 'data:image/png;base64,' + ret.base64Str; photos[ii] = dataUrl; alert(photo[ii]);//有多少张图片就弹出几次base64数据 return photos[ii]; } else { api.alert({ msg : err.msg }); } return photos[ii]; }); } data['photos'] = photos;alert(photos); alert(photos.length);//弹出 0
说明组不成数组,请问大神要怎样才能组入数组呢?return这东西不会用,不知是不是return放错了。请大神指点。。
解决方案
photo = ['http://a6a9bb2b2535f09d119f.b0.upaiyun.com/apicloud/c4de4fc78f0ce0ffaa2a9dd23b93884d.jpg','http://a6a9bb2b2535f09d119f.b0.upaiyun.com/apicloud/14ce2856073a87905a498355c2b4cbff.jpg']; var imgsArr=[]; for (var i in photo) { var img = new Image(); img.src = photo[i];//图片路径 img.onload = function () { var that = this; //生成比例 var w = that.width, h = that.height, scale = w / h; w = 640 || w; h = w / scale; //生成canvas var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); canvas.setAttribute('width',''+w+''); canvas.setAttribute('height',''+h+''); ctx.drawImage(that, 0, 0, w, h); var base64 = canvas.toDataURL('image/jpeg', 1 || 0.6 ); console.log(JSON.stringify(base64)); imgsArr.push(base64); } } console.log(JSON.stringify(imgsArr));
这样也组不成功,请高手指点