微信小程序保存图片到本地相册

处理微信小程序保存图片到本地相册
1.保存图片到本地(base64)
/**
 * 保存图片到本地(base64)
 * @param  {String}   imgData base64类型图片
 * @param  {String}   imgName 保存图片名称
 * @return {Promise}  callback 回调
 */
const wxSaveImage = (imgData, imgName, callback) => {
  //获取文件管理器对象
  const fs = wx.getFileSystemManager();
  let imageName = imgName ? imgName : '/wx' + new Date().getTime(); //图片名称
  const Imgpath = wx.env.USER_DATA_PATH + imageName + '.png'; //文件保存路径
  let imageSrc = null;
  if (imgData) {
    imageSrc = imgData.replace(/^data:image\/\w+;base64,/, ''); //处理base64图片文件,把'/'过滤掉
  }
  //写入本地文件
  fs.writeFile({
    filePath: Imgpath,
    data: imageSrc,
    encoding: 'base64',
    success(res) {
      // console.log(res)
      //保存到手机相册
      wx.saveImageToPhotosAlbum({
        filePath: Imgpath,
        success(res) {
          // console.log(res)
          if (callback) {
            callback(res);
          } else {
            getToast('保存成功');
          }
        },
        fail: function (err) {
          console.log(err)
          if (callback) {
            callback(err);
          } else {
            getToast('保存失败');
          }
        }
      })
    }
  })
}

 2.保存图片链接(jpg,jpeg,png等),接口图片(https://dc.aadv.net:10443/fsServerUrl/fs/download/F00AgKdVBvCR1TJyBTV1k1T)等

/**
 * 保存图片到本地(png,jpg等)
 * @param  {String}   imgUrl 图片
 * @param  {String}   imgName 保存图片名称
 * @return {Promise}  callback 回调
 */
const onSaveImage = (imgUrl, imgName, callback) => {
    //获取文件管理器对象
    let imageName = imgName ? imgName : '/wx' + getFormatDate().oYmdHms; //图片名称
    const Imgpath = wx.env.USER_DATA_PATH + imageName + '.png'; //文件保存路径
    // console.log(Imgpath)
    //写入本地文件
    wx.downloadFile({
        url: imgUrl,
        filePath: Imgpath,
        success(res) {
            // console.log(res)
            var opt = {
                scope: 'scope.writePhotosAlbum',
                content: '需要您授权保存相册'
            }
            app.getSettingRecord(opt).then((data) => {
                //保存到手机相册
                wx.saveImageToPhotosAlbum({
                    filePath: Imgpath,
                    success(res) {
                        // console.log(res)
                        if (callback) {
                            callback(res);
                        } else {
                            getToast('保存成功');
                        }
                    },
                    fail: function (err) {
                        console.log(err)
                        if (callback) {
                            callback(err);
                        } else {
                            getToast('保存失败');
                        }
                    }
                })
            })
        }
    })
}

 

posted @ 2022-04-25 12:07  时光独醒  阅读(3)  评论(0编辑  收藏  举报