收藏
回答

小程序上传的图片怎么先转base64在传后台

let that = this;
   wx.chooseImage({
     success: function (res) {
       var tempFilePaths = res.tempFilePaths
       console.log(tempFilePaths[0])
       let  canvas = wx.createCanvasContext('myCanvas')
         // 1. 绘制图片至canvas
         canvas.drawImage(tempFilePaths[0], 0, 0, 75, 75)
         // 绘制完成后执行回调,API 1.7.0
         canvas.draw()
         // 2. 获取图像数据, API 1.9.0
         wx.canvasGetImageData({
           canvasId: 'myCanvas',
           x: 0,
           y: 0,
           width: 75,
           height: 75,
           success (res) {
             console.log(":res", res)
             // 3. png编码
             let pngData = upng.encode([res.tempFilePaths[0]], 75, 75)
             // 4. base64编码
             let base64 = wx.arrayBufferToBase64(pngData)
             console.log("=---", base64)
           }
         })
       wx.setStorageSync('addImg', tempFilePaths[0])
       that.setData({
         addImg: tempFilePaths[0]
       })
        
       })
     }
   })


回答关注问题邀请回答
收藏

5 个回答

  • 2018-05-31

    我怎么转不成功呀

    2018-05-31
    有用 1
    回复
  • 飞腾
    飞腾
    2021-02-24

    wx.arrayBufferToBase64(pngData) ,提交后端代码怎么接受

    2021-02-24
    有用
    回复
  • 灵动
    灵动
    2018-10-16

    怎么转的啊?我这怎么转都是一片空白啊???

    2018-10-16
    有用
    回复
  • 任性༄🍎
    任性༄🍎
    2018-05-28

    官方真应该出一个这样的api,现在用的第三方插件(upng.js),不知道为啥在转base64 会有一定的概率会出现空白,没有出现的时候,有很大的概率出现,出现一次之后,往后基本就不会出现,很莫名其妙

    2018-05-28
    有用
    回复 2
    • 2018-05-31

      出现空白的原因可能是: 转 base64 没有放在 canvas.draw()的回调里进行

      2018-05-31
      回复
    • 任性༄🍎
      任性༄🍎
      2018-05-31回复

      确实是在 canvas.draw() 的success的回调中,所以才会觉得莫名其妙

      2018-05-31
      回复
  • 长星照耀十三个州府
    长星照耀十三个州府
    2018-05-26

    微信上传图片了解一下

    2018-05-26
    有用
    回复 2
    • 2018-05-31

      我为何转不成功

      2018-05-31
      回复
    • 长星照耀十三个州府
      长星照耀十三个州府
      2018-06-04回复

      为什么要转啊,直接上传不就可以了

      2018-06-04
      回复
登录 后发表内容