首页 小程序 微信小程序预览base64图片

微信小程序预览base64图片

背景

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

  • windows开发工具黑屏

  • 部分安卓机型无法显示

  • 控制台报错等

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

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

image-20211209104021627

解决方案

思路:先把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链接列表   
  })
}})


特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。