保存圖片
方法一: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) } } }); }) },
