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

KJ *_*dis 1 html javascript canvas

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

以下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);
};
Run Code Online (Sandbox Code Playgroud)

例如,我正在尝试绘制此图像(对大图像表示抱歉:/)

预期图像

但是最后

实际图像

是什么原因造成的?

Sha*_*ard 5

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

cv.width = img.width;
cv.height = img.height;
Run Code Online (Sandbox Code Playgroud)

现场测试用例

至于为什么这里已经进行解释 。