需求:前端上传base64图片
实现方式:采用官方api
表现:微信开发者工具不走回调或拿不到想要的结果,体验版小程序和线上小程序功能正常,但是耗时异常。长达1到2分钟之久(暂时排除是转base64产生的耗时所致)
问题:
1、wx.canvasGetImageData这个在微信开发者工具调试模式上没走回调,已经加了延迟
ctx.draw(false, setTimeout(() => {
// wx.canvasGetImageData({
// canvasId: ‘compressCanvas’,
// x: 0,
// y: 0,
// width: canvasW,
// height: canvasH,
// success: function (res) {
// console.log(‘canvasGetImageData success’)
// let pngData = upng.encode([res.data.buffer], res.width, res.height)
// let bs64 = wx.arrayBufferToBase64(pngData)
// resolve(‘data:image/jpeg;base64,’ + bs64)//最终图片路径
// },
// fail: function (err) {
// console.log(err)
// }
// })
}, 500))
方式2:
wx.getFileSystemManager().readFileSync一样加了延迟。阻塞执行成功后没有继续执行下面的代码
ctx.draw(false, setTimeout(() => {
wx.canvasToTempFilePath({
canvasId: ‘compressCanvas’,
x: 0,
y: 0,
width: canvasW,
height: canvasH,
success(res) {
const base64 = wx.getFileSystemManager().readFileSync(res.tempFilePath, “base64”)
resolve(‘data:image/jpeg;base64,’ + base64)
}
})
}, 500))
}, 500))