<!DOCTYPE html>
<html lang="ZH-CN">
<head>
<meta charset="utf-8">
<title>web RTC 测试</title>
<style>
#camera{
float: left;
margin: 20px;
}
#contentHolder{
width: 300px;
height: 300px;
margin-bottom: 10px;
}
#btn_snap{
margin: 0 auto;
border: 1px solid #f0f0f0;
background: #5CACEE;
color: #FFF;
width: 100px;
height: 36px;
line-height: 36px;
border-radius: 8px;
text-align: center;
cursor: pointer;
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#imgBoxxx{
width: 200px;
margin: 60px 20px 20px;
}
</style>
</head>
<body>
<div id="camera">
<div id="contentHolder">
<video id="video" width="300" height="300" autoplay></video>
<canvas style="display:none;" id="canvas" width="300" height="300"></canvas>
</div>
<div id="btn_snap">拍照</div>
</div>
<script>
var canvas = document.getElementById("canvas"),
pzBtn = document.getElementById("btn_snap"),
context = canvas.getContext("2d"),
video = document.getElementById("video");
alert('该页面会调用您的摄像头')
if (navigator.mediaDevices === undefined) {
navigator.mediaDevices = {};
}
if (navigator.mediaDevices.getUserMedia === undefined) {
navigator.mediaDevices.getUserMedia = function (constraints) {
var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
if (!getUserMedia) {
return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
}
return new Promise(function (resolve, reject) {
getUserMedia.call(navigator, constraints, resolve, reject);
});
}
}
var constraints = { audio: false, video: {width: 720,height:720} }
navigator.mediaDevices.getUserMedia(constraints)
.then(function (stream) {
var video = document.querySelector('video');
if ("srcObject" in video) {
video.srcObject = stream;
} else {
video.src = window.URL.createObjectURL(stream);
}
video.onloadedmetadata = function (e) {
video.play();
};
})
.catch(function (err) {
console.log(err.name + ": " + err.message);
});
pzBtn.addEventListener("click", function () {
context.drawImage(video, 0, 0, 300, 300);
var image = canvas.toDataURL('image/png');
var img = new Image();
img.id = "imgBoxxx";
img.src = image;
document.body.appendChild(img);
function dataURLtoFile(dataurl, filename) {
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, {type: mime});
}
console.log(dataURLtoFile(image, 'aa.png'));
});
</script>
</body>
</html>