drawBase64OnCanvas(base64) {
let that = this;
const fs = wx.getFileSystemManager(); // 获取文件系统管理器
const base64Data = base64.replace(/^data:image\/\w+;base64,/, ""); // 去掉头部
const filePath = `${wx.env.USER_DATA_PATH}/temp_image.png`; // 生成临时路径
const buffer = wx.base64ToArrayBuffer(base64Data); // 转换为 ArrayBuffer
// 将 ArrayBuffer 写入临时文件
fs.writeFile({
filePath,
data: buffer,
encoding: "binary",
success: () => {
console.log("临时文件写入成功:", filePath);
that.setData({
studentanswer: filePath,
imagePath: filePath
}, function() {
wx.showLoading({
title: '加载中...', // 显示加载提示
mask: true, // 防止触摸穿透
});
that.drawBackgroundImage(); // 数据更新完成后,调用绘制方法在canvas上绘制
});
},
fail: (err) => {
console.error("文件写入失败:", err);
}
});
},
将base64格式的图片传入此方法,经过转换后,调用drawBackgroundImage方法将图片渲染到canvas上,在开发工具可以正常渲染,但是在真机测试的时候没有任何报错,同时也没有渲染出来,为什么会出现这种情况?应该怎么更改?
这个方法你用的旧版吧(that.drawBackgroundImage() ), 建议迁移到 Canvas 2D:参考
https://developers.weixin.qq.com/miniprogram/dev/framework/ability/canvas-legacy-migration.html