繁体   English   中英

我在从HTML Canvas中显示URL中的图像时遇到问题

[英]Im having an issue displaying a image from a URL in HTML Canvas

据我所见,我的代码与W3schools上的代码完全相同,只是我制作了一个新图像而不是在html中使用了一个新图像,但是我无法显示它来显示任何内容

<body>
<center><canvas id="myCanvas" width="1000" height="750"></canvas></center>
<script>
    function newImage(src, width, height) {
            var img = document.createElement("img");
            img.src = src;
            img.width = width;
            img.height = height;
            return img;
        }   

    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    var i = newImage("http://i.imgur.com/ELsS4mN.jpg", 1000, 750);
    ctx.drawImage(i,0,0);
</script>

出现问题是因为您在完全下载图像对象之前将其返回。 因此,画布无法将图像数据呈现为背景图像。

仅当图像数据完全可用时,才应使用onload回调函数和drawImage 这应该工作:

function newImage(src, width, height, callback) {
    var img = new Image();
    img.width = width;
    img.height = height;
    img.onload = function () {
        callback(img);
    };
    img.src = src;
}

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

newImage("http://i.imgur.com/ELsS4mN.jpg", 1000, 750, function(image) {
    ctx.drawImage(image, 0, 0);
});

请注意,如何在其中传递回调函数并在下载完成后调用它,而不是从newImage函数返回图像。

  function newImage(src, width, height, callback) { var img = new Image(); img.width = width; img.height = height; img.onload = function () { callback(img); }; img.src = src; } var c = document.getElementById("myCanvas"), ctx = c.getContext("2d"); newImage("http://i.imgur.com/ELsS4mN.jpg", 1000, 750, function(image) { ctx.drawImage(image, 0, 0); }); 
 <canvas id="myCanvas" width="1000" height="750"></canvas> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM