微信小程序使用 2d canvas,先通过 ctx.drawImage()
把图片绘制在 canvas 上,接着用 wx.canvasToTempFilePath()
从 canvas 生成本地图片,正常来说会返回该图片的本地地址,但 iOS 拿到的可能是一张空白图片的地址。
回应一下标题,其实准确来说,并不是 ctx.drawImage()
为空,而是 wx.canvasToTempFilePath()
为空(拿到了一张纯白色的图片)。
这似乎是一个广泛存在的问题。
微信小程序官方文档表示 2d canvas 的接口都是同步绘制,但在 iOS 的实际表现似乎并非如此,之所以拿到空白图片,应该是因为 ctx.drawImage()
还未执行完毕,就开始执行 wx.canvasToTempFilePath()
。
要解决这个问题,只需要在 ctx.drawImage()
后等一小会,再 wx.canvasToTempFilePath()
,具体请看代码片段。