收藏
回答

wx.canvasToTempFilePath真机中导出失败

问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 Bug wx.canvasToTempFilePath 客户端 6.6.5 1.9.94


- 当前 Bug 的表现(可附上截图)

模拟器中正常

真机中不显示,且提示此错误




- 预期表现

   真机正常导出路径,通过image调取显示


- 复现路径

开发工具调试模式真机扫描二维码


- 提供一个最简复现 Demo


代码在真机中会执行fail而不是success,canvas没有设置display:none;其父级亦没有设置hidden相关属性


相关代码片段如下:wx.canvasToTempFilePath真机中fail:canvas is empty



最后一次编辑于  2018-04-12
回答关注问题邀请回答
收藏

7 个回答

  • ?
    2018-04-12

    可能你的机器比较菜  建议延时1秒    

    0.2秒太快了   大部分手机成功率不足50%  之前就是这个问题卡了我一下午

    2018-04-12
    赞同
    回复
  • I-S
    I-S
    2018-04-12

    https://developers.weixin.qq.com/ebook?action=get_post_info&token=935589521&volumn=1&lang=zh_CN&book=miniprogram&docid=0006a2289c8bb0bb0086ee8c056c0a   底部有提到

    2018-04-12
    赞同
    回复
  • I-S
    I-S
    2018-04-12

    draw()是需要时间的啊...200毫秒可能不够吧.根据体统而定.一般来说,电脑比手机性能好.最简单的办法,你不用settimeout,电脑上都搞不出来.


    2018-04-12
    赞同
    回复
  • 古月
    古月
    2018-04-12

    已经在draw里面回调wx.canvasToTempFilePath了呀,还是有别的判断绘制成功的方法呢?

    2018-04-12
    赞同
    回复
  • I-S
    I-S
    2018-04-12

    这边做了测试,感觉就是你canvas并没有成功绘制.setTimeout改为100,并不是每次都成功.而改为1000,成功率非常高.其实可以设置一个判断,当绘制成功之后再wx.canvasToTempFilePath就行了啊.


    2018-04-12
    赞同
    回复
  • 古月
    古月
    2018-04-12

    已经绘出,上面有提供代码片段,可以导入复现问题

    2018-04-12
    赞同
    回复
  • I-S
    I-S
    2018-04-12

    确认是否在此之前已经画出canvas

    2018-04-12
    赞同
    回复