我試圖使用ctx.DrawImage
畫一個電影框架到畫布元素,我得到了我認爲非常奇怪的縮放/裁剪行爲。爲什麼ctx.drawImage只將部分視頻元素畫到畫布上?
首先,這裏是我的代碼:
HTML
<body>
<video autoplay width="125" height="125"></video>
<img src="">
<canvas></canvas>
</body>
的Javascript:
var video = document.querySelector('video');
var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
var localMediaStream = null;
function snapshot() {
if (localMediaStream) {
ctx.drawImage(video, 0, 0, 125, 125);
document.querySelector('img').src = canvas.toDataURL('image/webp');
}
}
video.addEventListener('click', snapshot, false);
navigator.getUserMedia(
{
video: true
}, function(stream) {
video.src = window.URL.createObjectURL(stream);
localMediaStream = stream;
});
這裏做的事情基本上是從錄像拍攝靜態和壓碎它因此它大約是原始寬度的1/3和大約70%的高度。這令人沮喪。
除去125
並僅使用ctx.drawImage(video, 0, 0)
填充畫布與靜止,但它只是左上角(25%)的圖像。這也令人沮喪。
如何讓畫布繪製與視頻元素播放完全相同的圖像?
這加上視頻元素本身確實是125px x 125px
,但由於寬高比,視頻元素周圍有字母框(空白)。有沒有辦法強制視頻元素填充傳入的視頻流?
嘗試設置你的畫布'height' /'width'到'video.videoHeight' /'video.videoWidth'? – Kaiido 2014-12-11 01:24:06