<!DOCTYPE html>
<html>
<head>
<title>拍照上传</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="/assets/js/jquery.min.js"></script>
</head>
<body>
<video id="video" width="100%" height="270px" autoplay></video>
<button id="snap" style="margin-left: 42%;">拍照上传</button>
<!-- <button onClick="saveFile(filename);" type="button">下载图片</button> -->
<canvas id="canvas" height="270px" style="display:none;"></canvas>
<script type="text/javascript">
var aVideo=document.getElementById('video');
var aCanvas=document.getElementById('canvas');
var ctx=aCanvas.getContext('2d');
var width = '';
navigator.getUserMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia;//获取媒体对象(这里指摄像头)
navigator.getUserMedia({video:true}, gotStream, noStream);//参数1获取用户打开权限;参数二成功打开后调用,并传一个视频流对象,参数三打开失败后调用,传错误信息
function gotStream(stream) {
video.src = URL.createObjectURL(stream);
video.onerror = function () {
stream.stop();
};
stream.onended = noStream;
video.onloadedmetadata = function () {
alert('摄像头成功打开!');
width = $("#video").width();
$("#canvas").width(width);
};
}
function noStream(err) {
alert(err);
}
function getTime() {
var nowDate = new Date();var year = nowDate.getFullYear();
var month = nowDate.getMonth() + 1 < 10 ? "0" + (nowDate.getMonth() + 1): nowDate.getMonth() + 1;
var day = nowDate.getDate() < 10 ? "0" + nowDate.getDate() : nowDate.getDate();
var hours = nowDate.getHours()<10?"0" + nowDate.getHours():nowDate.getHours();
var minutes = nowDate.getMinutes()<10?"0" + nowDate.getMinutes():nowDate.getMinutes();
var seconds = nowDate.getSeconds()<10?"0" + nowDate.getSeconds():nowDate.getSeconds();
var dateStr = year + month + day + hours + minutes + seconds;
return dateStr;
}
document.getElementById("snap").addEventListener("click", function() {
ctx.drawImage(aVideo, 0, 0, width, 270);//将获取视频绘制在画布上
//获取canvas标签里的图片内容
var imgData = document.getElementById('canvas').toDataURL(type);
$.ajax({
type: "POST",
contentType:"application/json",
dataType: "json",
url: "https://localhost/api/app/savePhoto", //https才可以通过,不然会报错提示安全问题!
data: JSON.stringify({baseImg:"data:"+imgData, cm000034name:getTime()}),
success: function(data) {
console.log(data);
if (data.state == 'ok') {
alert("上传成功");
self.location = "http://localhost:8080/wxTools/index.html";
}
},
error: function(data) {
console.log(data);
}
});
});
//下载代码
var saveFile = function(filename){
//获取canvas标签里的图片内容
var imgData = document.getElementById('canvas').toDataURL(type);
imgData = imgData.replace(_fixType(type),'image/octet-stream');
var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href = imgData;
save_link.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
};
//下面的代码是保存canvas标签里的图片并且将其按一定的规则重命名
var type = 'png';
var _fixType = function(type) {
type = type.toLowerCase().replace(/jpg/i, 'jpeg');
var r = type.match(/png|jpeg|bmp|gif/)[0];
return 'image/' + r;
};
// 下载后的文件名规则
var filename = (new Date()).getTime() + '.' + type;
</script>
</body>
</html>