小程序base64转为本地图片

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bocongbo/article/details/84954567

小程序分享二维码是base64格式,在制作分享图时,需要转换为图片格式

1、新建base64src.js文件

const fsm = wx.getFileSystemManager();
const FILE_BASE_NAME = 'tmp_base64src'; //自定义文件名

function base64src(base64data, cb) {
  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() {
      cb(filePath);
    },
    fail() {
      return (new Error('ERROR_BASE64SRC_WRITE'));
    },
  });
};

export { base64src };

2、在需要使用的文件中引入并使用

import { base64src } from '../../utils/base64src.js'
Page({
  data: {
    shareQrImg: "data:image/jpeg;base64,/9j/4AAQSkZJRgA........GASDFKGKF=" //base64图片
  },
  onLoad: function (options) {
    base64src(this.data.shareQrImg, res => {
      console.log(res) // 返回图片地址,直接赋值到image标签即可
    });
  },
})

3、如果需要网络图片转换成base64格式。

wx.request({
  url: "https://s0.2mdn.net/simgad/10657937226496242109",
  method: 'GET',
  responseType: 'arraybuffer',
  success: (res) => {
    let base64 = wx.arrayBufferToBase64(res.data);
    let userImageBase64 = 'data:image/jpg;base64,' + base64;
    console.log(userImageBase64); // 打印base64格式图片
    // 如果需要使用本地缓存图片,请参照第一步
  }
})

猜你喜欢

转载自blog.csdn.net/bocongbo/article/details/84954567