详细问题描述
2.1.3(含)以上版本uni.canvasGetImageData在安卓下无法获取数据,IOS正常
[内容]
重现步骤
[步骤]
- 获取canvas上下文 let context=uni.createCanvasContext('emptyCanvas');
- 使用context.drawImage(imgPath, 0, 0,width,height)画图
- 使用uni.canvasGetImageData获取数据,success返回的数组为空
[结果]
[期望]
uni.canvasGetImageData能正确返回图像数据
IDE运行环境说明
2.1.3及其以上版本在安卓下均有问题
[IDE版本号]
2.1.3
[windows版本号]
[mac版本号]
uni-app运行环境说明
app
[运行端版本号]
HBuilderX编译版本2.1.3
编译模式是自定义组件模式
App运行环境说明
[Android版本号]
[iOS版本号]
[手机型号]
IOS8.6
[模拟器型号]
附件
[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]
[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]
async getImageColor(imgPath){
let width=5,height=5;
let context=uni.createCanvasContext('emptyCanvas');
context.drawImage(imgPath, 0, 0,width,height);
return new Promise((resolve, reject) => {
context.draw(false,()=>{
uni.canvasGetImageData({
canvasId:'emptyCanvas',
x:0,
y:0,
width:width,
height:height,
success(res){
let data=res.data;
let r=1,g=1,b=1;
for (let row = 0; row < height; row++) {
for (let col = 0; col < width; col++) {
if(row==0){
r += data[((width row) + col)];
g += data[((width row) + col) + 1];
b += data[((width row) + col) + 2];
}else{
r += data[((width row) + col) 4];
g += data[((width row) + col) 4 + 1];
b += data[((width row) + col) 4 + 2];
}
}
}
r /= (width height);
g /= (width height);
b /= (width height);
r = Math.round(r);
g = Math.round(g);
b = Math.round(b);
if(isNaN(r) || isNaN(g) || isNaN(b)){
//2.1.3以上编译器canvasGetImageData方法无效
resolve('rgb(255,255,255)');
}else{
resolve("rgb(" + r + "," + g + "," + b + ")");
}
},
fail(e){
console.log('error:'+JSON.stringify(e));
resolve('rgb(255,255,255)');
}
});
});
})
},
[App安装包或H5地址]
[可重现代码片段]
联系方式
[QQ]
1 个回复
VJayLau (作者) - 这是一个介绍
刚用2.1.3打了个生产包,发现无问题,该问题可能存在于基座中