背景:需要使用微信小程序拍摄多帧图片上传服务器,用于三维重建
微信小程序能不能利用摄像头实时获取每一帧的图像?
获取 Camera 实时帧数据 onCameraFrame的ArrayBuffer如何保存为图片? | 微信开放社区 (qq.com)
目前测试有三种方法
1:使用takePhoto方法
CameraContext.takePhoto(Object object)
缺点:频率过高的时候会导致调用摄像机失败,而且ios手机拍摄的时候画面抖动
2.onCameraFrame直接转为base64
微信小程序onCameraFrame获取的ArrayBuffer转为base64图片的方法_小程序 frame 转图片-CSDN博客
小程序AR识别,三行代码实现Camera数据毫秒级转base64图片 | 微信开放社区 (qq.com)
onCameraFrame获取到的frame.data如何转为图片的base64 | 微信开放社区 (qq.com)
GitHub - jpeg-js/jpeg-js:用于node.js的纯 javascript JPEG 编码器和解码器
缺少一个Buffer库,而且解码的时候手机会特别卡,放弃尝试
3.使用Canvas作为中间临时存放
将实时帧数据添加到Canvas上,然后将Canvas保存为临时图片
参考链接:
小程序AR识别,三行代码实现Camera数据毫秒级转base64图片 | 微信开放社区 (qq.com)
遇到的问题:
canvasToTempFilePath: fail canvas is empty 的坑 | 微信开放社区 (qq.com)
我使用的解决办法是:不要给canvas type,反正我们也不看
<canvas canvas-id="myCanvas"></canvas>
缺点:
1.把数据放到画布上面渲染这一步太耗费时间,而且画布多大,你的图片就是多大,你需要找一个地方放置画布
2.高频率采样,1s5张,手机非常卡顿,整个微信都会死机
总结
微信小程序纯傻逼