小程序怎么查看base64图片

小程序怎么查看base64图片?下面本篇文章给大家介绍一下微信小程序中预览base64图片的方法,希望对大家有所帮助!

一、后台传过来的图片为base64格式的,显示的话用【data:image/PNG;base64, + data】就可以正常显示。然后在调用微信API接口previewImage却有诸多问题,如:

  • windows开发工具黑屏
  • 部分安卓机型无法显示
  • 控制台报错等

二、经过查询,找到了官方的回答。微信官方的意思是需要用url地址,不支持base64格式,以下是微信官方回答:

wx.previewImage API 预览base64图片导致微信闪退? | 微信开放社区 (qq.com)

https://developers.weixin.qq.com/community/develop/doc/00088c9e44c3d880597ab22b15bc00?highLine=wx.previewImage%20base64

1.png

解决方案

思路:先把base64作为临时文件存到本地,然后预览,预览结束时删除临时文件

// 获取应用实例
const app = getApp()

Page({
  data: {
    //base64数据,由后台传过来
    base64: '',
    //本机的临时文件路径
    localImgUrl: ''
  },

  onShow: function() {
    // 在这里删除临时文件
    var localImgUrl = this.data.localImgUrl;
    if(localImgUrl) {
      var fs = wx.getFileSystemManager();
      fs.unlinkSync(localImgUrl);
      fs.closeSync();
    }
  },
    
  //预览图片
  onPreviewImage() {
    var base64 = data:image/PNG;base64, + this.data.base64;
    var imgPath = wx.env.USER_DATA_PATH + '/e-invoice' + Date.parse(new Date()) + '.png';
    var imageData = base64.replace(/^data:image\/\w+;base64,/, );
    var fs = wx.getFileSystemManager();
    fs.writeFileSync(imgPath, imageData, base64);
    fs.close();
    this.setData({
      localImgUrl: imgPath
    })
    wx.previewImage({
      urls: [imgPath] // 需要预览的图片http链接列表
    })
  }
})

【相关学习推荐:小程序开发教程

相关文章

概述 消息能力是小程序能力中的重要组成,我们为开发者提供了...
判断H5页面环境在微信中还是小程序中 用小程序提供的wx.mini...
wx.reLaunch和wx.navigateTo,wx.navigateTo的区别 2019-03-...
微信小程序如何从数组里取值_微信小程序 传值取值的几种方法...
H5项目接入微信授权登录,通过 UA 区分微信还是普通浏览器:...
微信小程序获取data-xx=""属性的值,自定...