ctx.draw() 进不去
发布于 5 年前 作者 xiulan70 7620 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)
  • 预期表现
  • 复现路径
  • 提供一个最简复现 Demo

ctx.draw() 进不去

有时候可以用,有时候不可以用。基础代码大致如下

wx.chooseImage({
          count: 1,    //上传数量设置为 1 
          sizeType: ['compressed'],    //上传图片质量
          sourceType: ['album', 'camera'],    //图片来源
          success: function (res) {
            var tempFilePaths = res.tempFilePaths    //返回的图片 url list
            that.getCanvasImg(0, 0, tempFilePaths);    //执行压缩 Func
          }

        });



getCanvasImg: function (index,failNum, tempFilePaths){
      var that = this;
      wx.getImageInfo({
        src: tempFilePaths[0], //图片的路径,可以是相对路径,临时文件路径,存储文件路径,网络图片路径,
        success: res => {
          console.log(res)
          if (index < tempFilePaths.length){
            const ctx = wx.createCanvasContext('attendCanvasId');
            setTimeout(() => {
              ctx.drawImage(tempFilePaths[index], 0, 0, 300, 150);

              ctx.draw(false, function () {


               // 此处回调有时可以进入,有时进不来

                console.log('aaaaaaaaaaaa')


                wx.canvasToTempFilePath({
                  canvasId: 'attendCanvasId',
                  success: function success(res) {
                    that.uploadCanvasImg(res.tempFilePath);
                  }, fail: function (e) {
                    console.log(e)
                  }
                });
              });
            }, 1000);
          }
        },
        fail: () => {},
        complete: () => {}
      });
    },




请诸位大神看到以后回复一下,为何 ctx.draw() 会进不去。

我看到大家有在2017年 2018 年提出过这个问题,据说是修复了,然而我这几天的经历告诉我这个貌似还是有问题

此外,我这段代码主要是想要实现压缩图片的功能,大家如果有好的方法,请安利我一波,谢谢

1 回复

给回调函数写成立即执行格式应该就可以了   (()=>{})()

回到顶部