1.使用wx.canvasToTempFilePath
将二维码绘制到画布上。
const ctx = wx.createCanvasContext('qrcodeCanvas');
ctx.drawImage('qrcodePath', 0, 0, canvasWidth, canvasHeight);
ctx.draw(false, () => {
wx.canvasToTempFilePath({
x: 0,
y: 0,
width: canvasWidth,
height: canvasHeight,
destWidth: canvasWidth,
destHeight: canvasHeight,
canvasId: 'qrcodeCanvas',
success: (res) => {
const tempFilePath = res.tempFilePath;
// 接下来进行保存操作
},
fail: (err) => {
console.error('canvasToTempFilePath failed', err);
}
});
});
2.利用wx.saveImageToPhotosAlbum
保存绘制的二维码图片到相册。
wx.saveImageToPhotosAlbum({
filePath: tempFilePath,
success: (res) => {
console.log('saveImageToPhotosAlbum success', res);
wx.showToast({
title: '保存成功',
icon: 'success',
duration: 2000
});
},
fail: (err) => {
console.error('saveImageToPhotosAlbum failed', err);
wx.showToast({
title: '保存失败',
icon: 'none',
duration: 2000
});
}
});
需要注意的是,保存图片到相册需要用户授权,因此在调用wx.saveImageToPhotosAlbum
之前,开发者需要先调用wx.getSetting
获取用户的授权状态,并在用户同意授权后才能执行保存操作。
3.另外,在小程序的app.json
文件中,需要添加相应的权限声明:
{
"permission": {
"scope.userLocation": {
"desc": "保存图片到相册"
}
}
}