收藏
回答

Canvas.createImage()只能调用一次?

Canvas.createImage()只能调用一次?想画两张图片,永远只有前面的画出来,注释掉前面的,后面就能画出来。调用两次,第二张就无法画出来。

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

7 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    2022-08-20

    你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

    2022-08-20
    有用
    回复 4
    • Zombie
      Zombie
      2022-08-20
      let bg = textCanvas.createImage()
       bg.src="https://.......1";

       bg.onload = () => {
                        textCtx.beginPath();
                        textCtx.drawImage(bg, 10,10, 200,200);
      }
       let bg2 = textCanvas.createImage()
       bg2.src="https://.......2";
       bg2.onload = () => {
                        textCtx.beginPath();
                        textCtx.drawImage(bg2, 50,300, 200,200);
      }


      bg2 无法画,注释掉bg,bg2就正常画,或者bg正常画后,bg.src再次赋值为"https://.......2";也无法画。
      2022-08-20
      回复
    • 社区技术运营专员--许涛
      社区技术运营专员--许涛
      2022-08-22回复Zombie
      麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
      2022-08-22
      回复
    • Zombie
      Zombie
      发表于移动端
      2022-08-22回复社区技术运营专员--许涛
      开发工具的模拟器上不行,真机换了几个也不行。
      2022-08-22
      回复
    • 社区技术运营专员--许涛
      社区技术运营专员--许涛
      2022-08-23回复Zombie
      麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
      2022-08-23
      回复
  • 阿伟
    阿伟
    04-17

    假设小程序底层有一个set数组,当你Canvas.createImage()的时候就是给set数组add一个元素,当你第一次用的时候 是没问题的 第二次使用同个url的时候就会出现 不报错但是不运行,解决方法就是在你url后面加个时间戳即可

    url = url+"?timertamp=" + new Date().getTime().toString(); 
    


    04-17
    有用
    回复
  • Zhang心独酌
    Zhang心独酌
    2023-06-02

    请问解决了吗?

    2023-06-02
    有用
    回复
  • heaven
    heaven
    2022-11-23

    我也遇到了,文字后放上去的,在图片的下面

    2022-11-23
    有用
    回复
  • .    ⃢👁-👁⃢     .
    . ⃢👁-👁⃢ .
    2022-11-18

    遇到同样问题,请问解决了吗?

    2022-11-18
    有用
    回复
  • 罹
    2022-11-16

    你好,请问你的问题解决了吗,我也碰到了同样的问题

    2022-11-16
    有用
    回复
  • Leon
    Leon
    2022-09-30

    我有同样的问题,我用的官方的示例代码,在开发者工具中没有问题,真机测试有问题,第一次可以绘制,等二次不会进入onload所以一直在await,当我将图片的地址添加一个动态的参数问题消失.

    我的真机测试设备:Samsung Galaxy S20

    微信版本: Version8.0.28


    这是我的示例代码:

    const IMAGE_URL="https://dog.ceo/img/dog-ceo-zine.jpg" 
    // 创建离屏 2D canvas 实例
      const canvas = wx.createOffscreenCanvas({type: '2d', width: 300, height: 150})
      // 获取 context。注意这里必须要与创建时的 type 一致
      const context = canvas.getContext('2d')
    
      // 创建一个图片
      const image = canvas.createImage()
      // 等待图片加载,第二次执行时会卡住,
      await new Promise(resolve => {
        image.onload = resolve
        // image.src = IMAGE_URL // 要加载的图片 url
        image.src=IMAGE_URL+"?t="+(new Date().getTime())
      )
    
       / 把图片画到离屏 canvas 上
      context.clearRect(0, 0, 300, 150)
      context.drawImage(image, 0, 0, 300, 150)
    
      // 获取画完后的数据
      const imgData = context.getImageData(0, 0, 300, 150)
    
    2022-09-30
    有用
    回复 1
    • 阿伟
      阿伟
      04-17
      如下
      04-17
      回复
登录 后发表内容