收藏
回答

wx.canvasToTempFilePath,偶尔成功保存图片,大多时候没有反应,会是什么原因?

微信小程序使用echarts图表,点击按钮保存图表时,代码如下

const ecComponent = this.selectComponent('#mychart');

 console.log("ecComponent==============",ecComponent)

真机测试时,有时候可以保存成功,但再点击保存图片,可以打印到这里,然后就没有然后了,也不报错,会有哪些因素造成这种情况?

 ecComponent.canvasToTempFilePath({

      success: res => {},

      fail: res => console.log("fail======",res)

 });

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

4 个回答

  • 社区技术运营专员-CJiang
    社区技术运营专员-CJiang
    2020-12-25

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2020-12-25
    有用
    回复 4
    • 十二月
      十二月
      2020-12-26
      分享链接https://developers.weixin.qq.com/s/HHMu1SmV7pmG,有两种保存方式,都不顺利,麻烦看下是什么原因,谢谢
      2020-12-26
      回复
    • 社区技术运营专员-CJiang
      社区技术运营专员-CJiang
      2020-12-29回复十二月
      查下echart看看是否有导出图片相关的api,直接调用即可。
      2020-12-29
      回复
    • 十二月
      十二月
      01-13
      获取节点:this.echartsComponnet = this.selectComponent('#mychart');
      获取路径: let image = this.echartsComponnet.toDataURL("image/png");
      此时报错:this.echartsComponnet.toDataURL is not a function
      01-13
      回复
    • 社区技术运营专员-CJiang
      社区技术运营专员-CJiang
      01-19回复十二月
      检查下是否是因为this指向原因?
      01-19
      回复
  • 🧐
    🧐
    05-24

    修改ec-canvas.js里面canvasToTempFilePath(opt)函数,在下面ctx.draw前加一句ctx.save();

    canvasToTempFilePath(opt) {

          if (!opt.canvasId{

            opt.canvasId = this.data.canvasId;

          }

          ctx.save();//这里进行修改

          ctx.draw(true, () => {

            wx.canvasToTempFilePath(opt,this);

          },2000);

        },

    试出来的。。。挺有效。。。无法解释。。。。。。

    05-24
    有用
    回复
  • 十二月
    十二月
    2020-12-25

    补充:开发者工具中点击可以保存,是真机测试不稳定

    2020-12-25
    有用
    回复
  • xy
    xy
    2020-12-25

    加一个setTimeout试试

    2020-12-25
    有用
    回复 4
    • 十二月
      十二月
      2020-12-25
      加了,setTimeout(()=>{
            console.log(1)
            ecComponent.canvasToTempFilePath({
              success: res =>  console.log(2) ,
              fail: res => console.log(3)
            })
          },3000),代码是这样的,可以打印1,后续没有任何反应
      2020-12-25
      回复
    • xy
      xy
      2020-12-25回复十二月
      拉一个代码片段
      2020-12-25
      回复
    • 十二月
      十二月
      2020-12-26回复xy
      代码链接https://developers.weixin.qq.com/s/HHMu1SmV7pmG,使用了两种方式,第一种不稳定,第二种有报错
      2020-12-26
      回复
    • 2021.9.16い
      2021.9.16い
      04-23回复十二月
      3000.。。要设置这么长嘛?设置500偶尔会有图片不显示,800也是。。已经有本地图片了,但是生成的图片不显示,,,emm……
      04-23
      回复
登录 后发表内容
问题标签