微信小程序 本地图片和base64图片相互转换

wx.chooseImage === 从本地相册选择图片或使用相机拍照
wx.getFileSystemManager() === 获取全局唯一的文件管理器
wx.getFileSystemManager().readFile === 读取本地文件内容
wx.base64ToArrayBuffer() === 将 Base64 字符串转成 ArrayBuffer 对象
wx.downloadFile === 下载文件资源到本地
#####从手机上选择图片转base64

getToBase64(){
    wx.chooseImage({
      count:'1',   // 最多可以选择的图片张数
      sizeType: ['original', 'compressed'], // ['原图','压缩图']
      sourceType: ['album', 'camera'],  // ['从相册选图','使用相机']
      success: res => {
      wx.getFileSystemManager().readFile({
          filePath: res.tempFilePaths[0], //选择图片返回的相对路径
          encoding: 'base64', //编码格式
          success: res => { //成功的回调
            console.log('data:image/png;base64,' + res.data)
          }
        })
      }
    })
  },

#####网络图片转base64图片

getToBase64Two(){
    var httpsimg = 'https://baidu.com/a.jpg'   // 网络图片地址
    wx.downloadFile({     // 需要先下载 
      url: httpsimg,
      success(res) {
        console.log(res,'res')
        wx.getFileSystemManager().readFile({
            filePath: res.tempFilePath, //选择图片返回的相对路径
            encoding: 'base64', //编码格式
            success: res => { //成功的回调
              let userImageBase64 = 'data:image/jpg;base64,' + res.data;
              console.log(userImageBase64); // 打印base64格式图片
            }
        })
      }
    })
  },

#####base64图片转本地图片

getToLocal(){
    var base64data = "";   // base64
    const fsm = wx.getFileSystemManager();
    const FILE_BASE_NAME = 'tmp_base64src'; //自定义文件名
    const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64data) || [];
    if (!format) {
      return (new Error('ERROR_BASE64SRC_PARSE'));
    }
    const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.${format}`;
    const buffer = wx.base64ToArrayBuffer(bodyData);
    fsm.writeFile({
      filePath,
      data: buffer,
      encoding: 'binary',
      success(r) {
        console.log(r,'r')
        console.log(filePath,'filePath')
      },
      fail() {
        return (new Error('ERROR_BASE64SRC_WRITE'));
      },
    });
  },
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值