【问题标题】:Load image from url and draw to HTML5 Canvas从 url 加载图像并绘制到 HTML5 Canvas
【发布时间】:2015-06-16 19:54:24
【问题描述】:

我在从 javascript 中的 url 加载图像时遇到问题。下面的代码有效,但我不想让图像从 html 加载。我想使用纯 javascript 从 url 加载图像。

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var img = document.getElementById("imImageId");
ctx.drawImage(img, 0, 0);

【问题讨论】:

    标签: javascript html image canvas html5-canvas


    【解决方案1】:

    如果您想要Promise 版本而不是onload 方法:

    async function drawImage(url, ctx) {
      let img = new Image();
      await new Promise(r => img.onload=r, img.src=url);
      ctx.drawImage(img, 0, 0);
    }
    
    let ctx = document.querySelector("#myCanvas").getContext("2d");
    await drawImage("https://example.com/image.png", ctx);
    

    【讨论】:

      【解决方案2】:

      就这么简单...

      var img=new Image();
      img.onload=start;
      img.src="myImage.png";
      function start(){
          ctx.drawImage(img,0,0);
      }
      

      【讨论】:

        【解决方案3】:

        简单,只需在JavaScript中创建一个图像对象,设置src,然后等待加载事件再进行绘制。

        工作示例:

        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        var img = new Image();
        img.onload = function() {
            ctx.drawImage(img, 0, 0);
        };
        img.src = 'https://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png';
        <canvas id="myCanvas"></canvas>

        【讨论】:

        • 优先使用img.addEventListener("load", () => ctx.drawImage(img, 0, 0)) 而不是设置onload
        猜你喜欢
        • 2011-08-28
        • 2011-03-30
        • 1970-01-01
        • 1970-01-01
        • 2014-10-20
        • 1970-01-01
        • 2021-01-18
        • 1970-01-01
        相关资源
        最近更新 更多