我在HTML画布中显示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>
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- nodejs-expressjs上传图像并显示它们
- 将PHP变量传递给jQuery时遇到问题
- 使用JSP从服务器检索和显示图像
- 我的jQuery插件参数没有正确启动,遇到了问题
- 角度:在ng重复上切换图像
- Heroku 部分不提供我的一些图像,以前有人遇到过这个问题
- 尝试在页面刷新时更改背景图像,遇到问题
- 使用 Javascript 交换图像时遇到问题
- HTML5/JS-在将画布导出为PNG时遇到错误-来自其他服务器的图像
- 在显示由精细上传器上传到Amazons3的图像时遇到问题
- 我在HTML画布中显示URL中的图像时遇到问题
- Angular+图像上传.将表单数据获取到后端时遇到问题
- 在JSP上显示图像时遇到问题
- 在php中保存上传的图像时遇到问题
- 通过angularjs将图像上传到cloudinary时遇到问题
- 使用javaScript在随机位置显示图像时遇到麻烦
- 当遇到不存在的图像时,For循环中断
- 如何从另一个网站加载图像并保存在我的网站?遇到了CORS问题(我认为)
- 在使用带有整页图像的rhino滑块时遇到问题