用户上传的图片中第一张有可能是空白的图片,很奇怪,感觉是代码问题,ctx.drawImage后需要延迟调用canvasToTempFilePath吗?
wx.createSelectorQuery()
.select('#canvas')
.fields({node: true, size: true})
.exec((res) => {
const canvas = res[0].node
let dpr = wx.getSystemInfoSync().pixelRatio;
dpr = dpr > 2 ? 2 : dpr
canvas.width = this.cWidth * dpr
canvas.height = this.cHeight * dpr
const ctx = canvas.getContext('2d')
const img = canvas.createImage()
img.src = tempFilePaths[0]
img.onload = () => {
ctx.drawImage(img, 0, 0, this.cWidth * dpr, this.cHeight * dpr)
wx.canvasToTempFilePath({canvas, success: (res) => {
...
}})
}
})
感谢感谢,在ctx.drawImage之后加了延时问题就解决了
楼主,请问问题解决了吗?我最近也遇到了同样的问题?
我得也是这样的,首次截图是空白 资源图片 画布宽高都有
我已经改成直接上传了。
https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.canvasToTempFilePath.html
把当前画布指定区域的内容导出生成指定大小的图片。在
draw()
回调里调用该方法才能保证图片导出成功。你没确认一下这张图片是不是空白?
const ctx = wx.createCanvasContext('myCanvas')
ctx.drawImage(tempFilePaths[0], 0, 0, this.cWidth, this.cHeight)
ctx.draw(false, () => {
wx.canvasToTempFilePath({canvasId: 'myCanvas'})
})
之前用的是canvas老接口上传,没有出现空白图过。
你也是画图片后直接导出吗? 需要setTimeout下再导出吗?