小程序-长按保存图片到本地相册

2,223 阅读1分钟

长按函数

  //长按保存图片--二维码
  pressSaveImage: function() {
    let url = this.data.codeImg;
    var that = this;
    //用户需要授权
    wx.getSetting({
      success: (res) => {
        if (!res.authSetting['scope.writePhotosAlbum']) {
          wx.authorize({
            scope: 'scope.writePhotosAlbum',
            success: () => {
              // 同意授权,保存图片
              that.saveImg(url);
            },
            fail: (res) => {
              console.log(res)
            }
          })
        } else {
          // 已经授权了
          that.saveImg(url);
        }
      },
      fail: (res) => {
        console.log(res)
      }
    })
  },

保存图片到相册

  // 由于saveImageToPhotosAlbum中的filePath 不支持网络图片,所以我们需要先把 base64 格式的图片数据,写入到小程序的文件系统中去,进一步取得该图片的临时路径以完成保存至手机相册的任务。
  saveImg(url) {
    var that = this;
    var fm = wx.getFileSystemManager(); //是获取文件管理器对象
    fm.writeFile({
      filePath: wx.env.USER_DATA_PATH + '/qCode.png', //创建一个临时文件的文件名
      data: url.slice(22), //把 data:image/png;base64,这一段去除
      encoding: 'base64',
      success: res => {
        // 保存到相册
        wx.saveImageToPhotosAlbum({
          filePath: wx.env.USER_DATA_PATH + '/qCode.png',
          success: function(res) {
            wx.showModal({
              content: '二维码已保存到相册,赶紧扫码加群吧~',
              showCancel: false,
              confirmText: '好的',
              confirmColor: '#333333',
              success: function(res) {
                // if (res.confirm) {
                //   /* 隐藏弹框 */
                //   that.setData({
                //     codeModal: true
                //   })
                // }
              },
              fail: function(res) {
                console.log(res)
              }
            })
          },
          fail: function(err) {
            console.log(err)
          }
        })
        console.log(res)
      },
      fail: err => {
        console.log(err)
      }
    })
  }