此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()不起作用。 我应该检查什么才能找到问题?
答案 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()图像事件中。