1首先 我是在整个海报全部绘制完成后 在最后调用了wx.canvasToTempFilePath 发现只有背景 没有图片
2改进方法 定义一个变量 count = 0 在所有绘制图片的地方加上1 循环定时器判断绘制完成的图片的数量和想要绘制的图片数量是否相等,相等则调用,最后发现在模拟器每次都是正常的 但是在真机上 ios13 每次绘制头像的时候count都不会自增 导致数量不相等 不能绘制海报 下面是绘制图片的代码
// 绘制图片
drawImg = (ctx, url, x, y, w, h) => {
// 创建图片
const img = this.canvas.createImage()
// 设置图片路径
img.src = url
img.onload = () => { // 图片加载完成 绘制图片
ctx.drawImage(img, x, y, w, h)
this.imgCount++ // 绘制成功一张 把图片的个数+1
console.log(`绘制图片的count` , this.imgCount)
}
}
这个img.onload有有加载时间,所以我把绘图的方法抽离出来,写成了promise,这样就能保证图片加载完成之后再做一些事情
我都是在所有图片draw success后,在里面再setTimeOut canvasToTempFilePath,大的图用2000,小的用1000