通过JavaScript语言,打开计算机的摄像头,实时预览摄像头画面,并且拍摄照片,通过Ajax上传到服务器
Ajax是通过JQuery框架实现的
<!DOCTYPE html>
<html>
<head>
<title>万码学堂wanmait</title>
<meta charset="utf-8">
<meta name="author" content="万码学堂wanmait">
</head>
<body>
<input type="button" value="打开摄像头" onclick="openCamera()">
<input type="button" value="拍照" onclick="takePicture()">
<input type="button" value="关闭摄像头" onclick="closeCamera()">
<br>
<!-- 显示摄像头实时拍摄的画面 -->
<video id="myVideo" width="500px" height="500px" autoplay="autoplay"></video>
<!-- 显示摄像头拍照的照片 -->
<canvas id="myCanvas" width="500px" height="500px"></canvas>
<script type="text/javascript">
//打开摄像头
function openCamera() {
var param = {
video: { width: 500, height: 500 },
audio: false
};
//摄像头拍摄参数 audio:false 关闭mic
var myVideo = document.getElementById('myVideo'); //获得网页上的myVideo组件 用来显示实时摄像头画面
var myCamera= navigator.mediaDevices.getUserMedia(param);
//获得摄像头
myCamera.then((stream) => {
myVideo.srcObject = stream;//myVideo组件显示的资源来自摄像头数据
myVideo.play();//myVeid组件播放视频
});
}
// 拍照
function takePicture() {
var myVideo = document.getElementById('myVideo');//获得myVideo组件
var myCanvas = document.getElementById('myCanvas');//获得myCancas组件 显示拍摄的照片
var graphics= myCanvas.getContext('2d');//graphics画笔 往canvas中间画图
graphics.drawImage(myVideo, 0, 0, 500, 500);//myVideo组件当前的画面 画到myCanvas组件 成为图片
var picture = document.getElementById('myCanvas').toDataURL('image/png');
//从myCanvas组件中间 获得拍摄的照片 png是图片格式
//上传图片到服务器
$.ajax({
url:""
,type:"post"
,data:{"picture":picture}
,success:function(mes){
}
});
//上传Ajax结束
}//拍照方法结束
// 关闭摄像头
function closeCamera() {
var stream = document.getElementById('myVideo').srcObject;//获得myVideo的资源
var tracks = stream.getTracks();
tracks.forEach(function(track) {
track.stop();//关闭
});
document.getElementById('myVideo').srcObject = null;
//清除myVideo中间的资源 myVideo中间不显示任何内容
}
</script>
</body>

0条评论
点击登录参与评论