1.在页面上写上触发方法
<image :src="src" mode="" @click="saveImg(qrcode)"></image>
2.在JS上获取微信小程序相机功能
saveImg(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("点击了拒绝");
},
});
},
注意:此时qrcode的格式是base64 需要通过saveImgToAlbum的方法去转换一下
3.通过saveImgToAlbum方法转换并保存下来
// 保存二维码图片到相册
saveImgToAlbum(qrcode) {
let base64 = qrcode.replace(/^data:image\/\w+;base64,/, ""); //去掉data:image/png;base64,
var fileManager = uni.getFileSystemManager();
let that=this
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",
filePath: wx.env.USER_DATA_PATH + '/img.jpg',
success: function (res) {
uni.showToast({
title: "保存成功",
});
},
fail: function (err) {
console.log("保存失败", err);
},
});
},
file: (err) => {
console.log("写入文件失败", err);
},
});
},