uniapp 将 base64 转换成图片

1,509 阅读1分钟

有时前端接收到的图片或者文件数据并不是一个线上的路径,有时需要在前端生成海报,在保存时,海报的路径一般会是 base64 的形式

将base64格式转化成图片格式

  • 由于会在多个页面用到此功能,所以现将其封装为公共的函数并导出,使用时直接调用即可。
  • uni.getFileSystemManager() 是 uniapp 提供的获取全局唯一的文件管理器
  • base64 路径需要去掉 data:image/png;base64
  • filePath 参数用于指定图片的临时路径,包含下载时的文件名
  • writeFile 内部如果调用页面内的函数,需要提前保留 this (const that = this)
export function base64src(base64, cb){
  let base64data = base64.replace(/^data:image/\w+;base64,/, "");
  var fileManager = uni.getFileSystemManager();
  fileManager.writeFile({
    filePath: wx.env.USER_DATA_PATH + "/img.jpg", 
    data: base64data, // base64 数据
    encoding: "base64", // 字符编码
    success: (res) => {
      cb(wx.env.USER_DATA_PATH + "/img.jpg")
    },
    file: (err) => {
    },
  });
}

执行函数后,会将临时路径返回给回调函数,再具体的功能页面中使用即可。

image.png

下载后,可以在下载文件夹中看到刚刚下载好的文件:

image.png