• 微信小程序base64图片保存到手机相册


    问题:base64图片不能直接用wx.saveImageToPhotosAlbum保存到手机相册

    解决:

    先用fs.writeFile写入本地文件,再wx.saveImageToPhotosAlbum保存到手机相册

    saveimg:function(){
        var _this=this
        //获取文件管理器对象
        const fs = wx.getFileSystemManager()
        
        //文件保存路径
        const Imgpath = wx.env.USER_DATA_PATH + '/qrcodeImg' + '.png'
        //_this.data.imgsrc   base64图片文件
        let imageSrc = _this.data.imgsrc.replace(/^data:image/w+;base64,/, '')
        
        //写入本地文件
        fs.writeFile({
          filePath: Imgpath,
          data: imageSrc,
          encoding: 'base64',
          success (res) {
            console.log(res)
            
            //保存到手机相册
            wx.saveImageToPhotosAlbum({
              filePath: Imgpath,
              success(res) {
                console.log(res)
                wx.showToast({
                  title: '保存成功',
                  icon: 'success'
                })
              },
              fail:function(err){
                console.log("失败了")
                console.log(err)
              }
            })
            
            
          }
        })
      },
    

    存储的话上面就可以实现了,下面是如果需要,删除文件的方法

    项目中有遇到过,因为接口返回的画海报的图片是base64的图片,需要先存为本地文件才可以画图,canvas画完海报素材还在临时文件中,不一会就满了,这时候就需要将临时文件中不需要的文件删除了,就用到如下方法:

    Object wx.env

    小程序环境变量对象

    wx.env.USER_DATA_PATH

    文件系统中的用户目录路径

    let fs = wx.getFileSystemManager()
    //获取文件 Stats 对象
    fs.stat({
      // `${}` 是es6中新增的字符串方法
      // ` 返单引号
      path: `${wx.env.USER_DATA_PATH}`,
      recursive: true,
      success: res => {
        //获取到stats对象
        
        //Object.keys(要返回其枚举自身属性的对象)  返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致
        Object.keys(res.stats).forEach(path => {
          var stats = res.stats[path]
          
          //删除指定路径的文件
            fs.unlink({
              filePath:`${wx.env.USER_DATA_PATH}`+stats.path,
              success:function(res){
                //删除成功
              },
              fail:function(res){
                //删除失败
              }
            })
            
        })
      },
    fail:res=>{
    //失败
    }
    })
    

    获取的stats对象:

    Object.keys(res.stats):

  • 相关阅读:
    《UNIX环境高级编程》笔记--UNIX标准化及实现
    SPOJ1811最长公共子串问题(后缀自动机)
    一个leetcode解题报告类目,代码很简洁
    字符压缩题目
    求最佳会议地点
    实现树的横向指针
    lower_bound与upper_bound
    求到所有房子距离和最小的新房子
    增加限制条件的矩阵求和
    切分数组来得到一定的和
  • 原文地址:https://www.cnblogs.com/kerin/p/14158250.html
Copyright © 2020-2023  润新知