收藏
回答

图片上传需要转换为base64,但是微信api本身貌似有bug?

需求:前端上传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 个回答

  • 子不语
    子不语
    2019-10-21

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

    2019-10-21
    有用
    回复 1
    • 谢东寅yin
      谢东寅yin
      2019-10-21
      1
      2019-10-21
      回复
  • 刁_Kyle
    刁_Kyle
    2019-10-21

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

    2019-10-21
    有用
    回复
登录 后发表内容
问题标签