收藏
回答

ctx.draw() 进不去

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug wx.draw() 客户端 7.0.3 2.5.0

- 当前 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 年提出过这个问题,据说是修复了,然而我这几天的经历告诉我这个貌似还是有问题


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

最后一次编辑于  03-06  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

1 个回答

  • 照明胧
    照明胧
    03-06

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

    03-06
    赞同
    回复 2
    • Vicky
      Vicky
      05-23

      我也遇到这个问题,也是偶尔会出现,然后改成立即执行格式就ok了。。。这是何解

      05-23
      回复
    • 路易
      路易
      06-26

      在iphone6也会出现这个问题 有时候可以得到 有时候得不到  如果改成 (()=>{})()  会

      canvasToTempFilePath: fail canvas is empty


      06-26
      回复