changeImgPx(url: string, width: number, height: number): Promise<string> {
return new Promise((resolve, reject) => {
const query = wx.createSelectorQuery()
query.select('#js-img-ctrl-canvas')
.fields({
node: true,
size: true
})
.exec((res) => {
const canvas = res[0].node
const ctx = canvas.getContext('2d')
let img = canvas.createImage()
img.src = url
img.onload = () => {
ctx.drawImage(img, 0, 0, width, height);
setTimeout(() => {
wx.canvasToTempFilePath({
canvas,
destWidth: width,
destHeight: height,
fileType: 'jpg',
quality: 1,
success: (outRes) => {
resolve(outRes.tempFilePath)
},
fail: (err) => {
reject(err)
}
})
}, 2000)
}
})
})
},
先使用canvas2d的drawImage, 然后使用wx.canvasToTempFilePath, 就是白图. 安卓一切正常, ios不行是白图
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
请问解决了吗,同样问题,只在部分IOS上出现,安卓没问题,很多苹果手机上也没问题,现在好多用户报障,然后5台苹果手机又重现不出来,头都炸了
需要把wx.canvasToTempFilePath这个写在ctx.draw的回调里面, draw函数的异步是假异步,如果直接保存,其实draw还没执行完
给画布设置一个背景色