小程序将本地代码包中的图片保存到手机本地相册中(信任域名的也可以)

       小程序保存代码包中(或其他信任网站的)的图片,一般不要直接 saveImageToPhotosAlbum 的,需要先使用 getImageInfo 获取图片,如果是网络的则会生成一个临时文件供 saveImageToPhotosAlbum 读取并保存,如果是本地的则返回个本地包的地址去保存,一般来说保存本地代码包中的图片的话,直接调用 saveImageToPhotosAlbum 就可以了。

      我代码里面多写一步 getImageInfo, 是为了防止以后图片更换成网络地址,然后又得去改代码

      具体代码如下:

Page({
  data: {

  },

  onLoad: function (options) {

  },

  handleSaveImage () {
    wx.getImageInfo({
      src: '../../images/xxx.jpg',
      success: (res) => {
        console.log(res)
        wx.saveImageToPhotosAlbum({
          filePath: res.path,
          success: function (data) {
            console.log(data)
            wx.showToast({
              title: '保存成功',
              icon: 'success',
              duration: 2000
            })
          },
          fail: err => {
            console.log(err)
            if (err.errMsg.indexOf('fail file not found') >= 0) {
              wx.showToast({
                title: '保存失败,找不到该图片',
                icon: 'none',
                duration: 2000
              })
            }
          }
        })
      },
      fail: fail => {
        wx.showToast({
          title: '获取图片失败',
          icon: 'none',
          duration: 2000
        })
      }
    })
  },
  handleAuthSaveToAlbum () {
    // 先判断写权限
    wx.getSetting({
      success: res => {
        console.log(res)
        if ('scope.writePhotosAlbum' in res.authSetting) {
          if (res.authSetting['scope.writePhotosAlbum']) {
            this.handleSaveImage()
          } else {
            wx.showModal({
              title: '提示',
              content: '保存失败,您拒绝保存图片到相册',
              showCancel: true,
              cancelText: '取消',
              confirmText: '前往设置',
              success: (result) => {
                if(result.confirm){
                  wx.openSetting({
                    success: res => {
                      if (!res.authSetting['scope.writePhotosAlbum']) {
                        wx.showToast({
                          title: '未打开保存相册权限',
                          icon: 'none',
                          duration: 2000
                        })
                      } else {
                        this.handleSaveImage()
                      }
                    }
                  })
                }
              }
            })
          }
        } else {
          this.handleSaveImage()
        }
      }
    })
  }
})

 

你可能感兴趣的:(小程序将本地代码包中的图片保存到手机本地相册中(信任域名的也可以))