收藏
回答

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

请问

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

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

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

2 个回答

  • 911
    911
    2020-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)

    2020-02-14
    有用 2
    回复 11
    • Borago
      Borago
      2020-02-17
      你好,这个js哪里获取啊?upng.js
      2020-02-17
      回复
    • 911
      911
      2020-03-26回复Borago
      upng.js 百度一下很多的,不过这个方法在真机上有些慢,大概需要7s,已弃用
      2020-03-26
      回复
    • 邹邹
      邹邹
      2020-04-10
      请问下那用的什么方法呢
      2020-04-10
      回复
    • 911
      911
      2020-04-10回复邹邹
      把返回的arraybuffer 用wx.canvasPutImageData画到canvas上然后用wx.canvasToTempFilePath返回个图片
      2020-04-10
      回复
    • 邹邹
      邹邹
      2020-04-10回复911
      为什么会报错呢:errMsg: "canvasPutImageData: fail canvas is empty
      2020-04-10
      1
      回复
    查看更多(6)
  • 衫儿
    衫儿
    2020-01-10

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

    2020-01-10
    有用
    回复 2
    • 浩
      2021-03-29
      请问这个库怎样集成到小程序中?直接npm安装报了一堆错。
      2021-03-29
      回复
    • 陈浪
      陈浪
      2021-06-17回复
      你好,请问你获取实时帧数据能真机调试吗?我按照官方demo来手机一直在闪退
      2021-06-17
      回复
登录 后发表内容
问题标签