VJayLau
VJayLau
  • 发布:2019-09-06 12:02
  • 更新:2019-09-06 13:08
  • 阅读:1008

【报Bug】2.1.3(含)以上版本uni.canvasGetImageData在安卓下无法获取数据

分类:HBuilderX

详细问题描述

2.1.3(含)以上版本uni.canvasGetImageData在安卓下无法获取数据,IOS正常

[内容]

重现步骤

[步骤]

  1. 获取canvas上下文 let context=uni.createCanvasContext('emptyCanvas');
  2. 使用context.drawImage(imgPath, 0, 0,width,height)画图
  3. 使用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]

2019-09-06 12:02 负责人:无 分享
已邀请:
VJayLau

VJayLau (作者) - 这是一个介绍

刚用2.1.3打了个生产包,发现无问题,该问题可能存在于基座中

该问题目前已经被锁定, 无法添加新回复