评论

canvasToTempFilePath: fail canvas is empty 的坑

canvasToTempFilePath 提示 canvasToTempFilePath: fail canvas is empty

wx.canvasToTempFilePath 提示 canvasToTempFilePath: fail canvas is empty,遇到这个问题时搜了好多方案,发现一个都不管用,最后有看了下文档,才发现问题所在。

仔细看下,文档中说当使用canvas 2d时 应该应该使用canvas该属性。

这就是问题所在啊。

当使用2d时根本不用传参 canvasId,直接传入canvas实例即可。

    wx.canvasToTempFilePath({

      x: 0,

      y: 0,

      width: 300,

      height: 200,

      destWidth: 100,

      destHeight: 100,

      canvas:  this.canvas,//这里是重点,获取实例的时候保存为全局变量就行了

      complete(res) {

        console.log(res)

      }

    })


最后一次编辑于  2020-09-06  
点赞 21
收藏
评论

24 个评论

  • 堂吉诃德
    堂吉诃德
    2021-01-05

    小程序真是垃圾


    2021-01-05
    赞同 19
    回复
  • Charles
    Charles
    2021-09-29

    这尼玛哦,写文档的咋不去吃翔哦,按照示例写,各种错误,还得来社区找答案。

    2021-09-29
    赞同 12
    回复 1
    • 豪豪先生
      豪豪先生
      2024-05-31
      严重赞同
      2024-05-31
      回复
  • 蚂蚁的地瓜
    蚂蚁的地瓜
    2020-11-06

    canvasPutImageData 这个同样的报错!!!

    2020-11-06
    赞同 8
    回复 5
  • just because
    just because
    2020-10-15

    有效+1,太坑了!!!

    2020-10-15
    赞同 2
    回复
  • 附耳
    附耳
    2022-07-28

    在单独的页面可以 但是在组件里面drow()不执行是怎么回事

    2022-07-28
    赞同 1
    回复 1
    • 雨尘漫天
      雨尘漫天
      02-20
      如果使用的是旧的canvas api而不是canvas2d的api,是因为调用createCanvasContext的时候,this指向出现了问题,需要将canvas所在组件的this作为第二个参数传入
      wx.createCanvasContext("test-canvas", this)
      02-20
      回复
  • 冯富铭
    冯富铭
    2020-12-09

    有效!!!找了一下午!狗东西原来要传canvas实例,其他解决方案都是后面加this

    2020-12-09
    赞同 1
    回复
  • 逗伴
    逗伴
    11-26

    2025年11.26日验证uniapp vue3中已经正常,弹框组件内canvas绘制的线条生成的png图片并预览

    注释的可以不传(自动计算比例),避免生成的图片模糊,红框为canvas绘制区域,篮筐为image预览生成的图片

    uni.canvasToTempFilePath({
        // x: 0,
        // y: 0,
        // width: 300,
        // height: 200,
        // destWidth: 50,
        // destHeight: 50,
        canvasId: 'drawCanvas',
        quality: 1,
        success: (res)=> {
        // 在H5平台下,tempFilePath 为 base64
          console.log(res.tempFilePath, 'res_001')
          this.drawImgSrc = res.tempFilePath
        },
        fail: (err)=> {
          console.log(err, 'fail_001')
        },
        complete: ()=> {
          console.log('complete_001')
        }
    }, this)
    

    11-26
    赞同
    回复 1
    • 逗伴
      逗伴
      11-26
      什么鬼自己名字是:违规用户?
      11-26
      回复
  • 三毛
    三毛
    2024-12-03

    24年,这问题还存,服了。

    2024-12-03
    赞同
    回复
  • zyw
    zyw
    2024-08-27

    确实有效,

    canvasId: that.canvas.id,

    是ios有效。安卓无效

    2024-08-27
    赞同
    回复
  • 棪燊
    棪燊
    2024-03-07

    还有一种可能是不要在<canvas canvas-id="myCanvas"></canvas>

    里面指定类型

    2024-03-07
    赞同
    回复

正在加载...

登录 后发表内容