Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
拍摄具有getUserMedia流的视频标记快照时,canvasElement.getContext和context.drawImage的图像大小错误_Canvas_Webrtc_Drawimage - Fatal编程技术网

拍摄具有getUserMedia流的视频标记快照时,canvasElement.getContext和context.drawImage的图像大小错误

拍摄具有getUserMedia流的视频标记快照时,canvasElement.getContext和context.drawImage的图像大小错误,canvas,webrtc,drawimage,Canvas,Webrtc,Drawimage,示例:我有一个网络摄像头,该摄像头输出648x480(但它可以是任何宽度和高度的网络摄像头) 我有这个密码 <video id="precam" playsinline="true" muted autoplay ></video> <canvas id="canvax" ></canvas><div onclick="wcanvasim();">CAPTU

示例:我有一个网络摄像头,该摄像头输出648x480(但它可以是任何宽度和高度的网络摄像头)

我有这个密码

<video id="precam" playsinline="true" muted autoplay ></video>
<canvas id="canvax" ></canvas><div onclick="wcanvasim();">CAPTURE</div>


<script>
    const videoPlayer = document.querySelector("#precam"); 
    const canvasElement = document.querySelector("#canvax");
    navigator.mediaDevices.getUserMedia({ video:true, audio:false }).then(stream => videoPlayer.srcObject = stream).catch(error => {console.error(error);});
    function wcanvasim () { var context = canvasElement.getContext("2d"); context.drawImage(videoPlayer, 0, 0 ); }
</script>
仍然不是正确的图像大小

为什么以及如何解决这个问题

这就是我得到的结果;它仅获取原始图像的一小部分:(

但我想精确地显示我在视频标签中看到的图像,多亏了

现在是

function wcanvasim () { 
 canvasElement.width = videoPlayer.videoWidth; 
 canvasElement.height = videoPlayer.videoHeight;
 canvasElement.getContext("2d").drawImage(videoPlayer, 0, 0, canvasElement.width, canvasElement.height);
}
function wcanvasim () { 
 canvasElement.width = videoPlayer.videoWidth; 
 canvasElement.height = videoPlayer.videoHeight;
 canvasElement.getContext("2d").drawImage(videoPlayer, 0, 0, canvasElement.width, canvasElement.height);
}