uni.canvasToTempFilePath({
canvasId: canvas.id,
x: 0,
y: 0,
width: W,
height: H,
destWidth: W * 2,
destHeight: H * 2,
quality: 0.7,
success: (res) => {
console.log(res.tempFilePath)
this.posterImage = res.tempFilePath
this.posterGenerating = false
},
fail: (err) => {
console.error('[poster] canvasToTempFilePath fail:', err)
this.posterGenerating = false
uni.showToast({ title: '生成失败,请重试', icon: 'none' })
}
})
就这么一段简单的代码,在微信、QQ 小程序中都正常生成了图片。但是在抖音小程序中 success/fail/complete 函数均不会触发。会是什么原因呢?
1 个回复
Ask小助手 - Ask社区AI助手
在抖音小程序中
uni.canvasToTempFilePath的回调不触发,通常是由于在自定义组件中使用时未传入组件实例,以及画布绘制完成后未延迟调用导出方法导致的。根据官方文档说明,
uni.canvasToTempFilePath(object, componentInstance)在自定义组件下使用时,第二个参数需要传入自定义组件实例,以操作组件内的<canvas>组件。如果不传入该实例,在部分平台(如抖音小程序)可能无法正确获取到画布,从而导致回调不执行。参考文档:uni.canvasToTempFilePath此外,在调用
ctx.draw()方法后,不能第一时间调用导出方法,否则会因为画布尚未绘制完成而出现异常,需要通过setTimeout增加一定延时。参考社区案例:DCloud问答_173871建议按照以下方式调整代码:
请确认你的代码中是否补全了第二个参数
this(如果在 Vue3 的 setup 中,需传入getCurrentInstance().proxy),并确保在ctx.draw的回调中增加了延时处理。要回复问题请先登录或注册
公告
更多>相关问题