收藏
回答

onCameraFrame返回arrayBuffer使用canvasPutImageData报错?

context.onCameraFrame((frame) => {

try {

if (!this.data.flag) {

return;

}

wx.canvasPutImageData({

canvasId: 'myCanvas',

x: 0,

y: 0,

width: frame.width,

heihgt: frame.height,

data: new Uint8ClampedArray(frame.data),

success(res) {

wx.showModal({

title: '获取图片',

content: '' + res,

})

},

fail(err){

wx.showModal({

title: '获取图片失败',

content: '' + err.errMsg,

})

}

});

}catch(err){

}

});

报错信息:canvasPutImageData:fail canvas is empty

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

7 个回答

  • Aaron
    Aaron
    2021-11-25

    搞了一下午终于解决了,根本原因就是 wx.canvasPutImageData 不支持 canvas 2d 类型,将 canvas中的 type=“2d” 去掉就好了

    2021-11-25
    有用 1
    回复 1
    • ᝰ破风行者 🚴
      ᝰ破风行者 🚴
      2023-01-11
      去掉了type,使用createSelectorQuery查询的时候就得不到node了
      2023-01-11
      回复
  • 八角楼
    八角楼
    2023-11-10

    请问有解决吗, errMsg: "canvasPutImageData:fail invalid data format"

    2023-11-10
    有用
    回复
  • 瘾
    2022-12-14

    2022年12月14日问题依旧层出不齐。。。

    https://developers.weixin.qq.com/community/develop/doc/000aea66914ef0929ade5aa7e56400



    2022-12-14
    有用
    回复
  • 阿宁啊
    阿宁啊
    2021-03-18

    onCameraFrame返回arrayBuffer使用canvasPutImageData报错?


    demo.js

    Page({
      onReady: function () {
        const cameraCtx = wx.createCameraContext()
        const cameraCfl = cameraCtx.onCameraFrame(res => {
          const data = new Uint8ClampedArray(res.data);
          wx.canvasPutImageData({
            x: 0,
            y: 0,
            width: 300,
            height: 150,
            data,
            success: res => {
              console.log('绘制成功:', res)
            },
            fail: res => {
              console.log('绘制失败:', res)
            },
            complete: res => {
              console.log(res)
            }
          })
        })
        cameraCfl.start()
      }
    })
    


    demo.wxml

    <view class="container">
      <camera device-position="back" flash="off" binderror="error" style="width: 100%; height: 100%"></camera>
      <canvas type="2d" id="canvas" canvas-id="canvas"></canvas>
    </view>
    


    demo.wxss

    page{
      height: 100%;
    }
    .container {
      height: 100%;
    }
    
    2021-03-18
    有用
    回复 1
    • Doppelganger
      Doppelganger
      2021-11-17
      你这个demo获取了canvas元素了?canvasPutImageData怎么确定放入哪个canvas中?
      2021-11-17
      回复
  • @梦翔
    @梦翔
    2020-05-04

    请问如何解决的呢

    2020-05-04
    有用
    回复
  • Kevin
    Kevin
    2019-12-15

    开发工具上就这样,你在上传个体验版在手机上测试就正常了。。。

    2019-12-15
    有用
    回复 1
    • 邹邹
      邹邹
      2020-04-10
      发现体验版也报错
      2020-04-10
      回复
  • 灵芝
    灵芝
    2019-12-13

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

    2019-12-13
    有用
    回复
登录 后发表内容
问题标签