后续补充:锅应该来自MIUI升级,因为我将之前打包的App安装后,依旧有这个问题(之前测试的时候是不存在的)。。。 但是但是,依旧请官方看看小米到底给你们挖了什么坑,解决此问题。。。 小米 webview版本: 85.0.4183.101
在canvas中绘制图片后,无法 canvasToTempFilePath 导出图片,直接报错。
TypeError: Cannot read property 'data' of undefined at view.umd.min.js:1
另外,之前 2.8.11 版本也有此问题 ,降级到2.8.8之后依旧发生 。
其他手机不确定,但是小米9Rro 5G, MIUI12 开发板最新版本, 100%毕现。下方代码可以直接重现。
export default {
data() {
return {
canvasPic : ''
}
},
onLoad() {
},
methods: {
async downloadPic(url) {
return new Promise((resolve, reject) => {
uni.downloadFile({
url: url,
success: res => {
resolve(res.tempFilePath);
},
fail: () => {
reject('图片下载失败');
}
});
});
},
},
async mounted() {
let ctx = uni.createCanvasContext('posterCanvas');
ctx.setFillStyle('#0f0');
ctx.fillText("哈哈哈1", 30, 30);
let pic;
pic = '/static/logo.png';
ctx.drawImage(pic, 0, 0, 100, 100);
pic = await this.downloadPic('https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/uniapp4@2x.png');
ctx.drawImage(pic, 100, 140, 200, 60);
ctx.draw(true, ()=>{
uni.canvasToTempFilePath({
canvasId: 'posterCanvas',
x: 0,
y: 0,
width: 320,
height: 240,
destWidth: 320,
destHeight: 240,
success: res => {
this.canvasPic = res.tempFilePath;
},
complete: (rs) => {
console.log('canvasToTempFilePath', rs)
}
});
});
}
}