javascript - 使用 Canvas 以真实大小绘制图像

标签 javascript html canvas

我正在尝试以 1:1 的比例将图像从 URL 加载到 HTML Canvas 中。我加载图像,并将 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);
};

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

Expected Image

但以这个结束

Actual image

这可能是什么原因造成的?

最佳答案

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

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

Live test case .

至于为什么,已经解释过了here .

关于javascript - 使用 Canvas 以真实大小绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344930/

相关文章:

javascript - ReactJS:来自多个 JSON 文件的下拉搜索结果

html - 移动网络应用社交媒体共享

html - 使 div 适合可用空间?

javascript - html5 Canvas getImageData 或 toDataURL 的结果 - 哪个占用更多内存?

html - Internet Explorer 9 中 Canvas 的奇怪问题, Canvas /上下文的宽度和大小是否有任何限制?

javascript - 有没有一种灵活的方法来修改可编辑元素的内容?

javascript - 如何获取 Google 表格中超过 100 个用户名的 Twitter 关注者数量?

javascript - JavaScript onclick : this. id 中的参数传递与其他属性

javascript - 有没有一种方法可以在我的 jqplot 图中为我的刻度线着色

javascript - KineticJS JavaScript 另存为文件系统选项