画布drawImage()不起作用

时间:2013-09-17 13:59:33

标签: javascript html5 canvas

此Javascript代码在画布上绘制部分图像:

var img = document.getElementById('img');
var canvas = document.getElementById('can');
//canvas.width = img.width;
//canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);

但是当我取消注释中间线以设置画布宽度和高度时,drawImage()不起作用。 我应该检查什么才能找到问题?

3 个答案:

答案 0 :(得分:16)

您需要等待浏览器加载图片

如果尚未加载图片,请使用onload事件并将代码更改为以下内容:

var img = document.getElementById('img');
var canvas = document.getElementById('can');
var ctx = canvas.getContext("2d");

var callback = function(image) {
   if(!image) image = this;
   canvas.width = img.width;
   canvas.height = img.height;
   ctx.drawImage(image, 0, 0);
}

if(img.complete) { //check if image was already loaded by the browser
   callback(img);
}else {
   img.onload = callback;
}

<强> See this working demo

答案 1 :(得分:0)

var img = document.getElementById('img');

尝试将变量命名为其他内容。还要确保加载了一些图像。

尝试我的小提琴http://jsfiddle.net/aliasm2k/tAum2/以获得更多想法

答案 2 :(得分:0)

在加载图像之前,不会设置宽度和高度图像属性,因此我建议您将代码放在onLoad()图像事件中。

相关问题