const saveImage = () => {
const canvas = wx.createOffscreenCanvas({
type: '2d',
width: 500,
height: 500
})
const ctx = canvas.getContext('2d')
const image = canvas.createImage()
await new Promise(resolve => {
image.src = "图片url 或 base64"
image.onload = resolve
image.onerror = function (err) {
logd('err', err)
resolve()
}
})
wx.canvasToTempFilePath({
canvas: canvas,
success: (res) => {
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success() {
wx.showToast({
title: '保存成功!',
icon: 'success',
duration: 2000//持续的时间
})
}
})
}
})
}
小程序中,保存第一次能够成功,再次保存同一张图片时,不执行 image.onload 和 image.onerror 事件,image.src 设置url链接拼接时间戳可以正常使用,但 image.src 设置 base64 时,还是有问题。
建议 image 加下缓存
把设置image.src的代码,放到image.onload 和image.onerror 后面试试
应该是图片第一次设置缓存了,之后再次设置就不会调用 onload 事件。