canvasPutImageData在小米5报invalid data form
发布于 7 年前 作者 renping 360 次浏览 来自 官方Issues

canvasPutImageData在小米5手机上报invalid data format错误

new Uint8ClampedArray(frame.data)得到的onCameraFrame视频流数据

已知小米mix2,华为p30,苹果8,苹果5都可以正常使用

怀疑是方法自身的适配问题,请官方核查一下

2 回复

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

回到顶部