wx.canvasToTempFilePath 提示 canvasToTempFilePath: fail canvas is empty,遇到这个问题时搜了好多方案,发现一个都不管用,最后有看了下文档,才发现问题所在。
仔细看下,文档中说当使用canvas 2d时 应该应该使用canvas该属性。
这就是问题所在啊。
当使用2d时根本不用传参 canvasId,直接传入canvas实例即可。
wx.canvasToTempFilePath({
x: 0,
y: 0,
width: 300,
height: 200,
destWidth: 100,
destHeight: 100,
canvas: this.canvas,//这里是重点,获取实例的时候保存为全局变量就行了
complete(res) {
console.log(res)
}
})

小程序真是垃圾
这尼玛哦,写文档的咋不去吃翔哦,按照示例写,各种错误,还得来社区找答案。
canvasPutImageData 这个同样的报错!!!
有效+1,太坑了!!!
在单独的页面可以 但是在组件里面drow()不执行是怎么回事
wx.createCanvasContext("test-canvas", this)
有效!!!找了一下午!狗东西原来要传canvas实例,其他解决方案都是后面加this
2025年11.26日验证uniapp vue3中已经正常,弹框组件内canvas绘制的线条生成的png图片并预览
注释的可以不传(自动计算比例),避免生成的图片模糊,红框为canvas绘制区域,篮筐为image预览生成的图片
uni.canvasToTempFilePath({ // x: 0, // y: 0, // width: 300, // height: 200, // destWidth: 50, // destHeight: 50, canvasId: 'drawCanvas', quality: 1, success: (res)=> { // 在H5平台下,tempFilePath 为 base64 console.log(res.tempFilePath, 'res_001') this.drawImgSrc = res.tempFilePath }, fail: (err)=> { console.log(err, 'fail_001') }, complete: ()=> { console.log('complete_001') } }, this)24年,这问题还存,服了。
确实有效,
canvasId: that.canvas.id,
是ios有效。安卓无效
还有一种可能是不要在<canvas canvas-id="myCanvas"></canvas>
里面指定类型