收藏
回答

自定义组件中canvas的canvasGetImageData获取不到数据

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug canvas 客户端 iOS 6.6.6 1.9.1

小程序代码:

wx.canvasGetImageData({

         canvasId: 'PaperCanvas',

         x: 0,

         y: 0,

         width: 100,

         height: 100,

         success:function(res) {

           console.log(res.width) // 100

           console.log(res.height) // 100

           console.log(res.data instanceof Uint8ClampedArray) // true

           console.log(res.data.length) // 100 * 100 * 4

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

           let base64 = wx.arrayBufferToBase64(pngData)

         },

         fail: function (res) {

           console.log(res);

           return ''

         }

       }, this)

运行后报错:

errMsg:"canvasGetImageData: fail canvas is empty"

请帮忙解答,多谢各位!

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

8 个回答

  • bibolibo
    bibolibo
    2021-01-15

    同样遇到这个问题,感觉是在组件里面放置的canvas 没有获取到

    这里使用我的代码片段,求大佬们解释一下 https://developers.weixin.qq.com/s/aLqVunm97tnv







    2021-01-15
    有用
    回复
  • 蒲欢
    蒲欢
    2019-08-27

    还没解决

    2019-08-27
    有用
    回复
  • 春节快乐
    春节快乐
    2019-08-27

    还没有解决

    2019-08-27
    有用
    回复
  • 太有才了丶
    太有才了丶
    2018-12-21

    解决了吗

    2018-12-21
    有用
    回复
  • ocean
    ocean
    2018-05-27

    现在我也碰到了这个问题,请问解决了吗?

    2018-05-27
    有用
    回复 1
    • 春节快乐
      春节快乐
      2018-05-29

      还没解决

      2018-05-29
      回复
  • Mxl
    Mxl
    2018-05-23

    同遇到这个问题,解决了吗

    2018-05-23
    有用
    回复 1
    • 春节快乐
      春节快乐
      2018-05-29

      还没

      2018-05-29
      回复
  • 李锐勇逗比
    李锐勇逗比
    2018-05-23

    是不是你wxml没有canvas

    2018-05-23
    有用
    回复 1
    • 春节快乐
      春节快乐
      2018-05-29

      有的哈

      2018-05-29
      回复
  • HS
    HS
    2018-05-18

    可否给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),我们定位下问题

    2018-05-18
    有用
    回复 5
    • 春节快乐
      春节快乐
      2018-05-22
      有邮箱吗? 发给您
      2018-05-22
      回复
    • 春节快乐
      春节快乐
      2018-05-29回复春节快乐

      您好 ,之前有个小程序API,在自定义组件中开始也报错fail canvas is empty, 加上绑定paperThis之后可以正常运行了,如下所示:

      Component({

      properties: {

          penSize: {

          type: Number,

          value: 8

          },

          penColor: {

          type: String,

          value: "rgb(0,0,0)"

          }

          },

      methods: {

          getHandWritingPng:function(){

          var paperThis = this;

          const app=getApp();

          wx.canvasToTempFilePath({

          canvasId: 'PaperCanvas',

          success: function (res) {

              console.log("成功获取图片"+res.tempFilePath);

              app.data.handwritingpath = res.tempFilePath

              return res.tempFilePath

          },

          fail: function (res) {

              console.log(res);

              return ''

          }

          }, paperThis)

          }

      }

      })


      wx.canvasGetImageData这个API是否也修要特殊处理?


      2018-05-29
      1
      回复
    • 马斯洛
      马斯洛
      2019-03-16

      我也是一样的问题, 自定义组件里的 canvas 报错 “canvasGetImageData: fail canvas is empty”,  我在微信小程序开发工具里是可以用的。  真机调试 就报这个错。  说明我代码没写错。 什么时候能解决?

      2019-03-16
      回复
    • 带鱼Yuiffy🤔
      带鱼Yuiffy🤔
      2019-11-14回复春节快乐
      有用!把页面的canvas移到了组件里一直出问题,看到你这个回答解决了。在自定义组件里的Canvas,相关api全都要加this
      2019-11-14
      回复
    • H_
      H_
      2023-10-25
      感谢提醒,自定义组件中使用该api的话,后面需要添加this的
      2023-10-25
      回复
登录 后发表内容