收藏
回答

canvasToTempFilePath报错illegal arguments

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug canvas 客户端 7.0.3 2.6.1

机型:HUAWEI nova 3e,微信版本:7.0.3

chooseLocalImage: function (e) {

var that = this;

let idx = e.currentTarget.dataset.idx

//console.log(idx)

wx.chooseImage({

count: 1,

sizeType: ['original', 'compressed'], //尺寸

sourceType: ['album', 'camera'], //来源

success(res) {

var _tempUrl = res.tempFilePaths[0];

that.data.rate = 2000000 / res.tempFiles[0].size //不超过2M

//console.log(that.data.rate)

wx.getImageInfo({

src: _tempUrl,

success(res) {

that.setData({

height: parseInt(that.data.width * res.height / res.width),

imageCanvasshow: false

});

const ctx = wx.createCanvasContext('imagecanvas');

let _width = that.data.width

let _height = that.data.height

ctx.drawImage(_tempUrl, 0, 0, _width, _height);

ctx.draw()

setTimeout(() => {

that.drawLocalImageAfter(idx);

}, 200);

}

})

},

fail: function () {

// fail

},

complete: function () {

// complete

}

})

},


drawLocalImageAfter: function (idx) {

try {

var that = this;

wx.canvasToTempFilePath({

quality: that.data.rate,

width: that.data.width,

heght: that.data.height,

fileType: 'jpg',

canvasId: 'imagecanvas',

success: function (res) {


var _url = that.data.sellerImageUrl


_url[idx] = res.tempFilePath

console.log(res.tempFilePath)

console.log(_url);

that.setData({

sellerImageUrl: _url,

imageCanvasshow: true

});

},

fail: function (err) {

console.log(err);

}

})

}

catch (err) {

console.log(err)

}

},


真机上调试时,第一次报canvasToTempFilePath:fail:illegal arguments,第二次正常,第三次报canvasToTempFilePath:fail:illegal arguments,第四次正常,以此类推,最近才开始出现这个问题,有谁知道为什么吗?

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

4 个回答

  • LastLeaf
    LastLeaf
    03-11

    请考虑使用 ctx.draw 的回调函数来代替 setTimeout 。

    03-11
    赞同
    回复 5
    • 无何有
      无何有
      03-12

      用回调会产生 fail:create bitmap failed 的错误,随机产生错误

      03-12
      回复
    • LastLeaf
      LastLeaf
      03-12回复无何有

      我们看下。

      03-12
      回复
    • 无何有
      无何有
      03-12回复LastLeaf

      回复是不是有字数限制,代码放不上来,提示回复失败

      03-12
      回复
    • LastLeaf
      LastLeaf
      03-12回复无何有

      有的。有代码要补充的话,搞个代码片段吧。

      03-12
      回复
    • 无何有
      无何有
      03-12回复LastLeaf

      其实之前是用的回调:

      setTimeout(function () {

      ctx.draw(false, function () {

      that.drawLogoAfter()

      });

      }, 200);

      出现fail:create bitmap failed 的错误之后才改成:

             ctx.draw()

             setTimeout(() => {

               that.drawLogoAfter();

             }, 200);


      03-12
      回复
  • nickname
    nickname
    03-07

    麻烦提供出现问题的机型和微信版本,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    03-07
    赞同
    回复 2
  • 无何有
    无何有
    07-04

                setTimeout(function () {
                  ctx.draw(false, function () {
                    that.drawImageAfter()
                  });
                }, 500);

    07-04
    赞同
    回复 4
    • Ðμαi、
      Ðμαi、
      07-04

      改成这种方法之后真机打开调试模式是没问题的,但是关掉调试模式就又不行了

      07-04
      回复
    • 无何有
      无何有
      07-04

      你意思是说调试模式可以,但在工具上调试就不行?

      07-04
      回复
    • Ðμαi、
      Ðμαi、
      07-05

      开发者工具上没问题,真机调试也没问题,预览的时候打开调试模式也没问题,关掉调试模式就不行了

      07-05
      回复
    • Ðμαi、
      Ðμαi、
      07-05

      我的问题解决了哇,可能是因为没有在downloadFile里添加合法域名,开发者工具勾选了不校验合法域名,按理说预览的时候应该不会出错的,但不知道为什么就是出了错,合法域名添加上就好了

      07-05
      回复
  • Ðμαi、
    Ðμαi、
    07-04

    请问楼主,问题解决没有哇,今天也遇到了这个问题,开发者工具上是正常的,安卓机真机预览就不行了呢

    07-04
    赞同
    回复