图片上传需要转换为base64,但是微信api本身貌似有bug?
发布于 7 年前 作者 nazeng 13993 次浏览 来自 官方Issues

需求:前端上传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))

2 回复

这个问题刚才和宵宵测试讨论过,确实有问题,等一个官方回复吧

没有延时,没出现这个问题

回到顶部