收藏
回答

onCameraFrame获取的base64格式与普通图片base64格式不同

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 需求 onCameraFrame 微信iOS客户端 6.5.3 2.7.7
onCameraFrame获取的arraybuffer用wx.arrayBufferToBase64转换后得到的base64格式看起来很奇怪,与普通图片转成的base64格式不一样,得到的base64也无法通过工具转换成图片。请问有人解决过这种问题吗,该如何处理?
回答关注问题邀请回答
收藏

4 个回答

  • Eric Huang
    Eric Huang
    置顶回答2019-07-31

    onCameraFrame 获取的是未经过编码的原始 RGBA 格式的图像数据,如果要转换成图片,需要对 arraybuffer 做一次图像编码(例如 PNG / JPEG)。或是借用 canvas 的 putImageData,先画进 canvas 再保存成图片。

    2019-07-31
    有用
    回复 14
    • 木头
      木头
      2019-08-01


      我现在是用 canvas 的 putImageData,但是我发现导出图片用canvasToTempFilePath拿到res.tempFilePath有时会报上面这个错误,有时候又是正常,我没有用operateCamera也不会去操作它得proto,不明白什么情况

      2019-08-01
      回复
    • Eric Huang
      Eric Huang
      2019-08-01回复木头
      你在 onCameraFrame 里拿到的 frame.data 是有效的是吧?如果出现这个错误还可以拿到 frame data 吗?
      2019-08-01
      回复
    • Eric Huang
      Eric Huang
      2019-08-01回复Eric Huang
      另外这里用的是什么机型呢?
      2019-08-01
      回复
    • 木头
      木头
      2019-08-01
      frame data有没有效不知道,因为不能直接翻译这个数据,但是看数据的长度是正常大小,应该是可以拿到的。小米mix2,给别人用好像也会这样。
      2019-08-01
      回复
    • Eric Huang
      Eric Huang
      2019-08-01

      行,我们排查一下,这块可能是内存分配失败了,建议先 catch 一下,然后重试:

      const listener = ctx.onCameraFrame(() => {})
      try {
        listener.start();
      } catch (e) {
        listener.start();
      }


      2019-08-01
      回复
    查看更多(9)
  • ran
    ran
    2022-05-26

    问题解决了嘛,我也遇见了,2022年

    2022-05-26
    有用
    回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2019-07-30

    你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

    2019-07-30
    有用
    回复 2
    • 木头
      木头
      2019-07-30
      https://developers.weixin.qq.com/s/cZmeSfmD7MaD
      2019-07-30
      回复
    • 木头
      木头
      2019-07-30
      小米mix2,7.0.5,miui10.3
      2019-07-30
      回复
  • 止水
    止水
    2019-07-30
    我也遇到了这个问题
    2019-07-30
    有用
    回复 1
    • 子康
      子康
      2019-08-07
      我也是,你解决了吗
      2019-08-07
      回复
登录 后发表内容