wxml代码如下
< view class = "canvas-box" > < canvas style = "width:300px;height:530px;" canvas-id = "mycanvas" /> </ view > |
js文件代码如下
//二维码 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 =
" ;
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) } }) } |
不知道如何解决这个问题,如果有人碰到过,请多多指教。谢谢
draw是异步,下个版本会提供回调函数,工具也会修复。目前请延迟一下再调用canvasToTempFilePath
downloadFile 要配置域名哦
drawImage 网络地址必须下载后绘制
开发的时候的域名,点击不校验
而且 绘制 要在 图片下载成功之后,考虑异步的情况
好的,谢谢
我只能假装我这个 异步setTimeout 在drawImage 之后
好的,我测试下
谢谢
域名配置的,下载后提示保存路径为http//store/*****
然后也是考虑到异步问题。我加了setTimeout 也是无效,你有参考例子吗?