收藏
回答

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

请问

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

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

回答关注问题邀请回答
收藏

2 个回答

  • 911
    911
    02-14

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

    所以需要用upng来转一下

    var upng = require('../../utils/upng.js');

    //这里转一下

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

    var base64 = wx.arrayBufferToBase64(pngData)

    02-14
    赞同
    回复 2
    • Borago
      Borago
      02-17
      你好,这个js哪里获取啊?upng.js
      02-17
      回复
    • 911
      911
      星期四 10:00回复Borago
      upng.js 百度一下很多的,不过这个方法在真机上有些慢,大概需要7s,已弃用
      星期四 10:00
      回复
  • 衫儿
    衫儿
    01-10

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

    01-10
    赞同
    回复
登录 后发表内容
问题标签