收藏
回答

canvas2d 在企业微信中,IOS无法绘制图片,createImage后不走onload?

环境:企业微信 & IOS, API: CanvasContext.drawImage & Canvas.createImage

canvas2d 在企业微信中,IOS无法绘制图片,drawImage 需要 image 对象,而 createImage 后不走 onload,执行了 onerror,我换成 base64 也不行。

域名配置正常! 使用 canvas 非 2d 也能 drawImage 成功显示。

安卓正常。

    wx.createSelectorQuery().select(`#mycanvas`).node(res=>{
      const canvas = res.node;
      canvas.width = 320
      canvas.height = 680
      let cvsctx = canvas.getContext('2d');
      wx.getImageInfo({
        srcthis.data.img,
        success(res)=>{
          // let base64 = wx.getFileSystemManager().readFileSync(res.path, 'base64') 
          // console.log('----base64:', base64);

          let bgImage = canvas.createImage();
          bgImage.onload = ()=>// 注意:是 onload 不是 onLoad 。
            console.log('onload', bgImage);
            cvsctx.drawImage(bgImage, 00, canvas.width, canvas.height)
          }
          bgImage.onerror = ()=>{
            console.log('----error------');
          }
          bgImage.src = res.path
          // bgImage.src = 'data:image/jpeg;base64,' + base64;
        }
      })
    }).exec();
          


划线之类的 API 都可以,但偏偏无法绘制背景图。

也想过直接不绘制背景图,而使用 image 定位到底部显示,但对图片绘制的内容还有马赛克功能,也就是需要对图片数据处理。所以行不通。

// 如果是使用旧版 canvas, 那么是可以的。但我想要使用的是性能更好的 canvas2d
ctx = wx.createCanvasContext('mycanvas')
ctx.drawImage(tmpfile, 0, 0, canvas.width, canvas.height)
ctx.draw()


CanvasContext.drawImage(string imageResource

第一个参数是 imageResource 。。能查到的资料太有限了,我目前没有找到有其他办法传入除了 image 对象之外的东西。


请教有经验的大佬,有没有办法?

最后一次编辑于  2020-08-31
回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容
问题标签