html5调用摄像头截图功能
在开始之前,需要了解不同浏览器对MediaDevices.getUserMedia()接口的支持情况。一般来说,现代浏览器(Chrome、Firefox、Edge等)对该接口的支持都很好。
navigator.mediaDevices.getUserMedia()
方法请求用户授权访问摄像头。<video>
元素,并在页面中展示。<canvas>
元素,用于绘制截图。toDataURL
方法获取图片的base64编码。
<!DOCTYPE html>
<html>
<head>
<title>HTML5调用摄像头截图</title>
</head>
<body>
<video id="video" autoplay></video>
<canvas id="canvas" style="display: none;"></canvas>
<button onclick="capture()">拍照</button>
<script>
const video = document.getElementById('video');
const canvas = document.getElementById('canvas');
const button = document.querySelector('button');
navigator.mediaDevices.getUserMedia({ video: true })
.then(stream => {
video.srcObject = st 1. github.com
github.comream;
})
.catch(error => {
console.error('Error access 1. github.com
github.coming media devices.', error);
});
function capture() {
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
canvas.getContext('2d').drawImage(vide 1. github.com
github.como, 0, 0, canvas.width, canvas.height);
const imageDataURL = canvas.toDataUR 1. github.com
github.comL('image/png');
// 使用imageDataURL,例如显示图片,下载,上传等
const img = new Image();
img.src = imageDataURL;
document.body.appendChild(img);
}
</script>
</body>
</html>
navigator.mediaDevices.getUserMedia()
方法获取视频流,并将其赋值给<video>
元素的srcObject
属性。<canvas>
元素,并将其大小设置为与视频元素相同。toDataURL
方法将画布的内容转换为base64编码的图片数据。navigator.mediaDevices.enumerateDevices()
方法列出所有可用的媒体设备,让用户选择。getUserMedia
方法的配置项来设置视频的分辨率、帧率等参数。HTML5提供的MediaDevices.getUserMedia()
接口为我们提供了在网页中访问摄像头和麦克风的能力,结合<video>
和<canvas>
元素,可以实现丰富的多媒体功能。
更多拓展:
希望这份解答能帮助你更好地理解HTML5调用摄像头截图的功能。