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放错了。请大神指点。。
估计 decodeImgToBase64() 是异步的吧?
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));
这样也组不成功,请高手指点