收藏
回答

drawImage 绘图,IDE测试正常,到了真机上测试。显示空白

wxml代码如下

<view class="canvas-box">
    <canvas style="width:300px;height:530px;" canvas-id="mycanvas"/>
</view>


js文件代码如下

var context = wx.createContext();      

//二维码
var qrcodepath = "网站域名/static/images/iconfont-clear.png";
context.drawImage(qrcodepath, 102, 230, 110, 110);
 
//绘制图片
wx.drawCanvas({
      canvasId: "mycanvas",
      actions: context.getActions()
});
//将生成好的图片保存到本地
wx.canvasToTempFilePath({
  canvasId: 'mycanvas',
  success: function success(res) {
    wx.saveImageToPhotosAlbum({
        wx.showToast({
          title: '图片生成成功',
          icon: 'loading',
          duration: 2000
        });
      }
    });
  }
});

IDE测试结果

手机预览。未能生成,只是一张透明图片

,另外,如果图片是本地的。则生成正常。网络图片一律失败

所以考虑到时候网络图片不行,就将图片下载。然后使用下载后的图,一样失败

下载过程如下

downpic:function(){
   console.log("开始下载图片");
   var that=this;
   var qrcodepath = "网站域名/static/images/iconfont-clear.png";
   wx.downloadFile({
     url: qrcodepath,
     type: 'image',
     success: function (file) {
        wx.saveFile({
         tempFilePath: file.tempFilePath,
         success: function (r) {
           console.log("qrcode:" + r.savedFilePath);
           that.setData({ qrcode_path: r.savedFilePath })
         }
       })
     },
     fail: function (err) {
       console.log(err)
     }
   })
 }



不知道如何解决这个问题,如果有人碰到过,请多多指教。谢谢

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

6 个回答

  • 黄思程
    黄思程
    2017-11-07

    draw是异步,下个版本会提供回调函数,工具也会修复。目前请延迟一下再调用canvasToTempFilePath

    2017-11-07
    有用
    回复
  • 嗯
    2017-11-07

    downloadFile 要配置域名哦

    drawImage 网络地址必须下载后绘制

    开发的时候的域名,点击不校验


    而且 绘制 要在 图片下载成功之后,考虑异步的情况

    2017-11-07
    有用 1
    回复
  • 欢乐
    欢乐
    2017-11-08

    好的,谢谢

    2017-11-08
    有用
    回复
  • 嗯
    2017-11-08


    我只能假装我这个 异步setTimeout 在drawImage 之后

    2017-11-08
    有用
    回复
  • 欢乐
    欢乐
    2017-11-07

    好的,我测试下

    谢谢

    2017-11-07
    有用
    回复
  • 欢乐
    欢乐
    2017-11-07

    域名配置的,下载后提示保存路径为http//store/*****
    然后也是考虑到异步问题。我加了setTimeout 也是无效,你有参考例子吗?


    2017-11-07
    有用
    回复
登录 后发表内容