1. Приложение сохраняет изображения в формате base64 (с использованием растрового изображения).
а. Метод определения
saveImgFile(base64) {
const bitmap = new plus.nativeObj.Bitmap("test");
bitmap.loadBase64Data(base64, function() {
const url = "_doc/" + new Date().getTime() + ".png"; // url为时间戳命名方式
console.log('saveHeadImgFile', url)
bitmap.save(url, {
overwrite: true, // 是否覆盖
// quality: 'quality' // 图片清晰度
}, (i) => {
uni.saveImageToPhotosAlbum({
filePath: url,
success: function() {
uni.showToast({
title: '图片保存成功',
icon: 'none'
})
bitmap.clear()
}
});
}, (e) => {
uni.showToast({
title: '图片保存失败',
icon: 'none'
})
bitmap.clear()
});
}, (e) => {
uni.showToast({
title: '图片保存失败',
icon: 'none'
})
bitmap.clear()
});
},
Б. Используйте метод src в качестве пути к изображению в формате base64.
<image :src="src" mode="" @click="saveImgFile(src)"></image>
2. Апплет WeChat сохраняет изображения в формате base64.
<button type="primary" class="saveBtn" @tap="getSaveImg(qcCode)">Сохраните QR-код в альбом. При сохранении QR-кода в альбом сначала определите, авторизовал ли его пользователь.
Если пользователь разрешил это, сохраните его напрямую.
uni.getFileSystemManager() — объект файлового менеджера.
вар FileSystemManager = uni.getFileSystemManager()
FileSystemManager.writeFile(объект 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)
}
})
},
Справочный документ: https://blog.csdn.net/wupinlong/article/details/115670905 .