收藏
回答

如何解决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;
    }
  },


最后一次编辑于  09-26  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

1 个回答

  • 卢霄霄
    卢霄霄
    09-26

    问题1: 头像需要下载,页面需要加载

    问题2:你在 wx.saveImageToPhotosAlbum 加个fail方法打印下呢

    09-26
    赞同
    回复 2
    • 陈同凡
      陈同凡
      09-27
      问题已找到了,清理了下数据缓存,重新申请接口权限就OK了~感谢
      09-27
      回复
    • 卢霄霄
      卢霄霄
      09-27回复陈同凡
      原来如此
      09-27
      回复
问题标签