获取 Camera 实时帧数据 onCameraFrame的ArrayBuffer如何保存为图片?

发布于 8 年前作者 mingtian9883 次浏览最后编辑 8 年前来自 ask

请问

const listener = context.onCameraFrame((frame) => {
  console.log(frame.data instanceof ArrayBuffer, frame.width, frame.height)})

拿到的 ArrayBuffer 怎么能保存为一图片呢?有什么思路,谢谢

2 回复
taoqian
taoqian1 楼6 年前

由于返回的ArrayBuffer不能直接转base64

所以需要用upng来转一下

var upng = require(‘…/…/utils/upng.js’);

//这里转一下

let pngData = upng.encode([frame.data], frame.width, frame.height)

var base64 = wx.arrayBufferToBase64(pngData)

olu
olu2 楼6 年前

把ArrayBuffer数据压缩转码成JPG格式,用到https://github.com/eugeneware/jpeg-js这个。期间你可以通过worker线程进行转码