使用画布以真实尺寸绘制图像

时间:2013-10-13 11:58:49

标签: javascript html canvas

我正在尝试以1:1的比例将图像从URL加载到HTML画布中。我加载图像,并将画布DOM元素设置为适当的尺寸,但由于某种原因,画布中的图像显着放大,因此只绘制左上角。

以下JSFiddle证明了这一点:http://jsfiddle.net/KdrYr/1/

var img = new Image();
var cv = document.getElementById('thecanvas');
img.src = 'http://www.photographyblogger.net/wp-content/uploads/2009/12/Picture-in-a-picture4.jpg';
img.onload = function() {
    var ctx = cv.getContext('2d');
    cv.style.width = img.width + 'px';
    cv.style.height = img.height + 'px';
    ctx.drawImage(img, 0, 0);
};

例如,我正在尝试绘制此图片(对于大图片感到抱歉:/)

Expected Image

但结束了这个

Actual image

导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:5)

您需要指定画布的实际宽度和高度,而不是通过其样式:

cv.width = img.width;
cv.height = img.height;

Live test case

至于为什么,嗯,它已经解释过here