javascript - 来自视频和图像/蒙版的 Canvas drawImage() 尺寸

标签 javascript canvas dimensions drawimage

我有一个容器,上面有一个视频元素和一个 mask 图像,如下所示:

<div id="container">
    <img id="mask" src="/images/mask.png" width="1078" height="1508" />
    <video autoplay="" id="video"></video>
</div>

如你们所见,蒙版图像的宽度为 1078 像素,高度为 1508 像素。视频元素的宽度也是 1078 像素,但高度仅为 807 像素(不必更长)。

Canvas 元素具有相同的宽度和高度。当我尝试拍摄视频快照并将该快照和蒙版图像的副本绘制到 Canvas 时,这两个元素都被拉伸(stretch)到 Canvas 边界之外。

var context = canvas.getContext('2d');

// Draw video
context.drawImage(video, 0, 0);

// Get mask image and draw mask
maskObj.src = document.getElementById("mask").src;
context.drawImage(maskObj, 0, 0);

我知道我可以通过 drawImage() 函数传递更多参数,但我不知道其他参数的确切用途。 This文章说您可以将宽度和高度作为整数传递。但是,如果我执行以下操作:

context.drawImage(video, 0, 0, 1078, 807);
context.drawImage(maskObj, 0, 0, 1078, 1508);

它仍然在 Canvas 边界之外绘制元素。 无法真正找出我做错了什么,所以感谢所有帮助。

例子; enter image description here

最佳答案

它应该发生的唯一方法是使用 css 设置 Canvas 的大小。尝试使用 html 属性更改 Canvas 的大小,或者添加以下内容:

canvas.width  = 1078;
canvas.height = 1508;
var context = canvas.getContext('2d');

Canvas 的分辨率仅取决于这些属性。 css 宽度和高度只是拉伸(stretch)它。

关于javascript - 来自视频和图像/蒙版的 Canvas drawImage() 尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22683429/

相关文章:

javascript - Require.js 和 r.js 包括所有依赖项,甚至是子模块的依赖项

javascript - 如何在两个动画 Canvas 元素之间进行通信?

javascript - 将元素添加到 DOM 树后,元素的尺寸是否可立即读取?

jquery - jQuery 中元素的总宽度(包括填充和边框)

android - 在 ImageView 中获取以像素为单位的图像尺寸

javascript - 使用替换和正则表达式将 JavaScript 中字符串的每个单词的首字母大写

javascript - 当我更新数据库中的用户文档时,Meteor 用户被注销

javascript - 使用 require js 加载 jquery 插件

javascript - 尝试在 JavaScript 中加载时绘制图像

javascript - HTML Canvas (SVG) - 在圆柱体表面绘制图像