如何解决wx.saveImageToPhotosAlbum 无法保存图片的问题?
报错如图,无法保存图片到相册 [图片] 相关代码片段1:点击保存图片按钮,一直报错显示“Uncaught (in promise) save image failed” [代码]onLoad: [代码][代码]function[代码] [代码](options) {[代码][代码] [代码][代码]api.showLoading();[代码][代码] [代码][代码]console.log(app.globalData.picParam);[代码][代码] [代码][代码]let {x,y,logoHeight, logoWidth, avatarHeight, avatarWidth, logoUrl, avatarUrl} = app.globalData.picParam;[代码][代码] [代码][代码]this[代码][代码].setData({[代码][代码] [代码][代码]canvasWidth: logoWidth,[代码][代码] [代码][代码]canvasHeight: logoHeight[代码][代码] [代码][代码]});[代码][代码] [代码][代码]const ctx = wx.createCanvasContext([代码][代码]'avatarPic'[代码][代码]);[代码][代码] [代码][代码]ctx.drawImage(logoUrl, 0, 0, logoWidth, logoHeight);[代码][代码] [代码][代码]ctx.draw();[代码][代码] [代码][代码]ctx.save(); [代码][代码]// 先保存状态 已便于画完圆再用[代码][代码] [代码][代码]ctx.beginPath(); [代码][代码]//开始绘制[代码][代码] [代码][代码]//先画个圆[代码][代码] [代码][代码]ctx.arc(x + avatarWidth / 2, y + avatarHeight / 2 , avatarWidth / 2, 0, Math.PI * 2, [代码][代码]false[代码][代码]);[代码][代码] [代码][代码]ctx.clip();[代码][代码]//画了圆 再剪切 原始画布中剪切任意形状和尺寸。一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内[代码][代码] [代码][代码]ctx.drawImage(avatarUrl, x, y, avatarWidth, avatarHeight);[代码][代码] [代码][代码]ctx.draw([代码][代码]true[代码][代码]);[代码][代码] [代码] [代码] [代码][代码]api.hideLoading();[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]downloadPic() {[代码][代码] [代码][代码]api.saveCanvas([代码][代码]'avatarPic'[代码][代码])[代码][代码] [代码][代码].then(res => {[代码][代码] [代码][代码]return[代码] [代码]api.saveImage(res.tempFilePath);[代码][代码] [代码][代码]})[代码][代码] [代码][代码].then(res => {[代码][代码] [代码][代码]api.showToast([代码][代码]'保存成功'[代码][代码], [代码][代码]'success'[代码][代码]);[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码] 相关代码片段2:点击保存小程序二维码,但点击后仅返回了临时文件路径,没有保存至手机相册中 [代码]onSelect(event) {[代码][代码] [代码][代码]console.log(event.detail.name);[代码][代码] [代码][代码]let _this = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]switch[代码][代码](event.detail.name) {[代码][代码] [代码][代码]case[代码] [代码]'保存小程序二维码'[代码][代码]:[代码][代码] [代码][代码]wx.cloud.downloadFile({[代码][代码] [代码][代码]fileID: [代码][代码]'cloud://cloud-lzj35.636c-cloud-lzj35-1300316134/0.png'[代码][代码], // 文件 ID[代码][代码] [代码][代码]success: res => {[代码][代码] [代码][代码]// 返回临时文件路径[代码][代码] [代码][代码]let tempPath = res.tempFilePath[代码][代码] [代码][代码]console.log(tempPath);[代码][代码] [代码][代码]wx.saveImageToPhotosAlbum({[代码][代码] [代码][代码]filePath: tempPath,[代码][代码] [代码][代码]success(res) {[代码][代码] [代码][代码]// const savedFilePath = res.savedFilePath;[代码][代码] [代码][代码]api.showToast([代码][代码]'保存成功'[代码][代码], [代码][代码]'success'[代码][代码]);[代码][代码] [代码][代码]console.log(res);[代码][代码] [代码][代码]_this.onCancel()[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail: console.error[代码][代码] [代码][代码]})[代码][代码] [代码][代码]break[代码][代码];[代码][代码] [代码][代码]default[代码][代码]:[代码][代码] [代码][代码]_this.onCancel()[代码][代码] [代码][代码]break[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码]