收藏
回答

base64转本地图片?

 根据这种base64转本地图片的方法在真机上,canvas画布中不显示这个二维码的图片,是什么原因?

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 };


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标签即可

    });

  },

})

回答关注问题邀请回答
收藏

1 个回答

  • 空心小木
    空心小木
    2019-12-20

    base64图片可以只直接放到image里面,可以直接显示

    2019-12-20
    有用
    回复 2
    • 知白
      知白
      2019-12-20
      我是要在canvas里面绘制
      2019-12-20
      回复
    • 空心小木
      空心小木
      2019-12-20回复知白
      那就只能写到本地然后再去搞了,,,wx.getFileSystemManager().writeFile()
      2019-12-20
      回复
登录 后发表内容
问题标签