canvasPutImageData在小米5手机上报invalid data format错误
new Uint8ClampedArray(frame.data)得到的onCameraFrame视频流数据
已知小米mix2,华为p30,苹果8,苹果5都可以正常使用
怀疑是方法自身的适配问题,请官方核查一下
initCameraContext() {
try {
this.data.listener = wx.createCameraContext().onCameraFrame((frame) => {
// 只取一张相机帧
try {
this.data.listener.stop();
} catch (e) {
this.data.listener.stop();
}
// 停止扫描线动画
this.stopScanLineMove(true);
console.log(‘拿到相机流图,准备开始画:’,Date.now()-this.data.testData)
this.data.testData = Date.now();
// 把相机帧完整的画在canvas上
this.drawImageInCanvas(new Uint8ClampedArray(frame.data));
})
} catch (e) {
wx.showModal({
title: ‘提示’,
content: ‘当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。’
})
}
},
// 把与相机视图区域对应的相机帧画在canvas上
drawImageInCanvas(parsedFrameData) {
console.log(‘Uint8ClampedArray:’,Date.now()-this.data.testData)
this.data.testData = Date.now();
wx.canvasPutImageData({
canvasId: ‘myCanvas’,
data: parsedFrameData,
x: 0,
y: 0,
width: 480,
height: 640,
success: () => {
console.log(‘画到画布上了,准备裁剪拿图片:’,Date.now()-this.data.testData)
this.data.testData = Date.now();
this.clipCanvasImage();
},
fail: (err) => {
console.log(‘fail1’, err);
this.startScanTimeout1();
// 恢复扫描线动画
this.stopScanLineMove(false);
wx.showToast({
title: ‘fail1’,
icon: ‘none’
})
}
});
},
麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)