微信小程序 base64格式图片的显示及保存

当咱们拿到以下base64格式的图片(以下图)时,网络

base64格式的图片数据:dom

 

如何显示 ?

使用image标签,src属性添加data:image/png;base64,this

(注意:若imgData返回数据中含有data:image/png;base64,时,src直接写src="{{imgData}}"便可)编码

<image src="data:image/png;base64,{{imgData}}"></image>

显示不出来?

按照上面的方法,可是图片显示不出来。。。spa

有一种缘由是由于返回的base64的数据中存在回车换行,须要回车换行替换为''便可code

var base64Image = 'base64数据' // 后台返回的base64数据
var imgData = base64Image.replace(/[\r\n]/g, '') // 将回车换行换为空字符''

而后经过image标签显示便可。对象

如何保存?

使用writeFile及saveImageToPhotosAlbum API保存至相册,具体JS代码以下:blog

(注意:若imgData返回数据中含有data:image/png;base64,时,data参数须要写成:imgSrc.slice(22),意思为:这里是把 data:image/png;base64,  这一段去除)图片

    var imgSrc =  this.data.imgData;//base64编码
    var save = wx.getFileSystemManager();
    var number = Math.random();
    save.writeFile({
      filePath: wx.env.USER_DATA_PATH + '/pic' + number + '.png',
      data: imgSrc,
      encoding: 'base64',
      success: res => {
        wx.saveImageToPhotosAlbum({
          filePath: wx.env.USER_DATA_PATH + '/pic' + number + '.png',
          success: function (res) {
            wx.showToast({
              title: '保存成功',
            })
          },
          fail: function (err) {
            console.log(err)
          }
        })
        console.log(res)
      }, fail: err => {
        console.log(err)
      }
    })

本想使用wx.previewImage来预览图片并保存,可是此API的参数只能是网络连接,因此放弃,采用以上方法保存。get

 

说明:

1. wx.getFileSystemManager()  是获取文件管理器对象

2. wx.env.USER_DATA_PATH + '/pic' + number + '.png'表示生成一个临时文件名

相关文章
相关标签/搜索