收藏
回答

使用offscreencanvas作为drawimage的source 会报错?

 onReady() {
    const query = wx.createSelectorQuery()
    query.select('#mycanvas')
      .fields({
          id: true,
          node: true,
          size: true
        }).exec(this.init.bind(this));
  },
  async init(res) {
    console.log(res, "res")
    const canvas = res[0].node
    const ctx = canvas.getContext('2d')
    const dpr = wx.getSystemInfoSync().pixelRatio
    //新接口需显示设置画布宽高;
    canvas.width = res[0].width * dpr
    canvas.height = res[0].height * dpr
    ctx.scale(dpr, dpr);


   // 创建离屏 2D canvas 实例
    const canvasOff = wx.createOffscreenCanvas({
      type: '2d',
      width: 300, 
      height: 100
    })
    // 获取 context。注意这里必须要与创建时的 type 一致
    const context = canvasOff.getContext('2d')
    // 创建一个图片
    const image = canvas.createImage()
    // 等待图片加载
    await new Promise(resolve => {
      image.onload = resolve
      image.src = 'http://wx2.sinaimg.cn/mw600/79a79fd0ly1gsmb2aq366j20k00xk0vy.jpg' // 要加载的图片 url
    })


    // 把图片画到离屏 canvas 上
    context.drawImage(image, 0, 0, 300, 150)
    // 把离屏画到在屏canvas上
    ctx.drawImage(canvasOff, 0, 0, 100, 100);
  },

Unhandled promise rejection TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap or OffscreenCanvas)'

    at CanvasRenderingContext2D.e.drawImage

报的这个

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

2 个回答

  • 社区技术运营专员--阳光
    社区技术运营专员--阳光
    2021-07-20

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2021-07-20
    有用
    回复
  • xplee
    xplee
    2021-07-20
    context.drawImage(image, 0, 0, 300, 150)
    -->
    canvasOff.drawImage(image, 0, 0, 300, 150)
    
    ctx.drawImage(canvasOff, 0, 0, 100, 100);
    --》这个用错了吧,可以试试这个wx.canvasPutImageData
    
    2021-07-20
    有用
    回复 2
    • pixels
      pixels
      2021-07-29
      他这是官方的例子,就是有问题
      2021-07-29
      回复
    •  
       
      2021-08-21回复pixels
      2021年8月21日,我依旧没有找到“Failed to execute 'drawImag' on 'CanvasRenderingContext2D'”的解决方法,哎
      2021-08-21
      2
      回复
登录 后发表内容