保存图片
方法一:wx.downloadFile + wx.canvasToTempFilePath +
wx.saveImageToPhotosAlbum;
方法二:wx.getImageInfo +
wx.canvasToTempFilePath + wx.saveImageToPhotosAlbum
wx.downloadFile:下载文件资源到本地,仅支持https的链接地址。成功的回调函数会返回一个临时的文件地址,即:res.tempFilePath。更多参数见官方文档DownloadTask wx.downloadFile(Object object);
wx.getImageInfo:获取图片信息,成功的回调函数中会图片的本地路径,即:res.path。更多参数见官方文档wx.getImageInfo(Object object);
wx.canvasToTempFilePath:把当前画布指定区域的内容导出生成指定大小的图片。成功的回调中会返回图片的临时地址,即:res.tempFilePath。更多参数见官方文档wx.canvasToTempFilePath(Object object, Object this;
wx.saveImageToPhotosAlbum:保存上一步的图片到系统相册,成功时会直接保存图片到相册中。更多参数见官方文档wx.saveImageToPhotosAlbum(Object object)
当用户点击上面的保存海报按钮后,若用户是第一次使用,此时会有一个弹窗提醒用户授权。如果用户点击了拒绝,无论再怎么点保存海报的按钮(清空缓存可绕过),都不会有弹窗提醒且会直接进入fail中,所以必须要调用wx.getSetting这个API,判断res.authSetting的授权结果中是否有scope.writePhotosAlbum。有且值为true则表示同意保存到相册,否则就要再次提醒用户开启权限。
//保存二维码 qrcodesaveimg(){ var that = this Promise.all([that.downLoadImage(that.data.posterInfo.qrcode)]).then((res)=>{ console.log(that.data,"图片路径",res[0]) let imgurl = res[0] wx.getSetting({ success (res) { console.log(res.authSetting[\'scope.writePhotosAlbum\'],res) if(res.authSetting[\'scope.writePhotosAlbum\'] ||res.authSetting[\'scope.writePhotosAlbum\']==undefined){ console.log("1111",res[0]) wx.saveImageToPhotosAlbum({ filePath: imgurl, success: (e) => { wx.showToast({ title: \'保存成功\', duration: 2000 }); }, fail: (e) => { console.log("失败",e) } }) }else{ wx.openSetting({ success(res) {} }) } } }) }) },
//下载图片返回本地连接 downLoadImage(url) { return new Promise((resolve, reject) => { wx.downloadFile({ url: url, success: (res) => { if (res.statusCode === 200) { resolve(res.tempFilePath) } } }); }) },