彻底解决canvasToTempFilePath 无法获取到图片(获取到空白图片、黑色图片、canvasid不存在)等等
canvasToTempFilePath 的坑太多了,不同环境有不同的坑,不同版本的canvas接口有不同的坑,为了彻底解决这些问题最好的方法就是不用它。
直接用toDataURL获取base64图像数据,然后再写入临时文件即可
[代码]// 获取base64图像
const b64Data = this.ctx.canvas.toDataURL()
const time = new Date().getTime();
const filePath = `${uni.env.USER_DATA_PATH}/temp_image_${time}.png`
// base64格式的图片要去除逗号前面的部分才能正确解码
const buffer = uni.base64ToArrayBuffer(b64Data.substring(b64Data.indexOf(',') + 1))
// 写入临时文件
uni.getFileSystemManager().writeFile({
filePath,
data: buffer,
encoding: 'utf8',
success: res => {
console.log('保存图片:', filePath)
}
})
[代码]