微信小程序 base64格式图片的显示和保存[亲测有效]

微信小程序 base64格式图片的显示和保存[亲测有效]当 base64 格式图片数据为: base64Url = ‘data:image/png;base64,’ + base64编码时。(base64 编码中不包括前缀 data:image/png;base64,) 按照上述方法,但是图片显示不出来。。。 可能原因是在小程序中 …

微信小程序

当 base64 格式图片数据为: base64Url = ‘data:image/png;base64,’ + base64编码时。(base64 编码中不包括前缀 data:image/png;base64,

    <image src="{{base64Url}}" />

显示不出来

按照上述方法,但是图片显示不出来。。。 可能原因是在小程序中 base64 的数据中包括回车、换行符,无法识别。将回车、换行符全局替换成”(空字符串)即可。

    var base64Data = 'base64数据'; // 后台返回的 base64 格式的图片数据
    var imgUrl = base64Data.replace(/[\r\n]/g, ''); // 替换回车、换行符

图片保存到相册

注意:imgData 为 不包含 data:image/png;base64, 格式的 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 只能用于网络链接

如何保存网络图片

通过 wx.downloadFile 保存临时文件路径的方式实现。

wx.downloadFile({
  url: '下载资源的url',
    success(res) {
      wx.saveImageToPhotosAlbum({
        filePath: res.tempFilePath,
        success: res => {
            console.log('保存成功', res)
        },
        fail: error => {
        	if (error.errMsg === 'saveImageToPhotosAlbum:fail:auth denied' ||
                    error.errMsg === 'saveImageToPhotosAlbum:fail auth deny' ||
                    error.errMsg === 'saveImageToPhotosAlbum:fail authorize no response') {
                    wx.showModal({
                        content: '需要您授权保存相册',
                        showCancel: false,
                        success: () => {
                          wx.openSetting({
                            success: (settingdata) => {
                              if (settingdata.authSetting['scope.writePhotosAlbum']) {
                                wx.showToast({
                                  title: '获取权限成功,再次点击图片即可保存',
                                  icon: 'none',
                                  mask: true
                                })
                              } else {
                                wx.showToast({
                                  title: '获取权限失败,将无法保存到相册哦~',
                                  icon: 'none',
                                  mask: true
                                })
                              }
                            },
                            fail: (failData) => {
                              console.log(failData)
                            }
                          })
                        }
                      })
            }
        }
      })
    }
})

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13883.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注