后续补充:锅应该来自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)

}

});

});

}

}

更多推荐