base64图片保存到相册
qrcode路径返回的base64码
显示图片:
<button type=“primary” class=“saveBtn” @tap=“getSaveImg(qcCode)”>保存二维码至相册
保存二维码至相册,先判断用户是否授权,如果用户已经授权则直接保存。
uni.getFileSystemManager()是文件管理器对象
var FileSystemManager = uni.getFileSystemManager()
FileSystemManager.writeFile(Object object) // 写文件
参考文档
uni.saveImageToPhotosAlbum(OBJECT) 保存图片到系统相册。注意:图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径。所以保存时的图片需要写入一个临时路径,调用uni.getFileSystemManager()
下面代码中的qrcode
是base64格式的,需要将前面的”data:image/png;base64“这一段去掉,才可以使用接下来调用的api
// 获取授权判断是否授权相册
getSaveImg(qrcode){
let that = this;
uni.getSetting({
success: (res)=>{
console.log(res)
if (!res.authSetting["scope.writePhotosAlbum"]){
uni.showModal({
title: '警告',
content: '检测到您没您未授权相册权限,点击确定获取授权。',
success: function (res) {
if (res.confirm) {
uni.authorize({
scope: 'scope.writePhotosAlbum',
success() {
// 用户已经同意
that.saveImgToAlbum(qrcode);
},
fail(err){
console.log('用户拒绝授权相册')
}
})
}
}
})
}else{
that.saveImgToAlbum(qrcode);
}
},
fail: () => {
console.log('点击了拒绝')
}
})
},
// 保存二维码图片到相册
saveImgToAlbum(qrcode) {
let base64 = qrcode.replace(/^data:image\/\w+;base64,/, "");//去掉data:image/png;base64,
var fileManager = uni.getFileSystemManager();
fileManager.writeFile({
filePath: wx.env.USER_DATA_PATH+'/img.jpg', // 指定图片的临时路径
data: base64, // 要写入的文本或二进制数据
encoding: 'base64', // 指定写入文件的字符编码
success: res => {
console.log('写入文件成功', res)
console.log(wx.env.USER_DATA_PATH + '/img.jpg')
uni.saveImageToPhotosAlbum({ // 保存图片到相册
filePath: wx.env.USER_DATA_PATH + '/img.jpg',
success: function (res) {
console.log('保存成功', res)
uni.showToast({
title: '保存成功',
})
},
fail: function (err) {
console.log('保存失败', err)
}
})
},
file: err => {
console.log('写入文件失败', err)
}
})
},