最近在搞一个考试系统,系统要求要有随机拍照的功能,并且摄像头能够收到js的控制。在线摄像头嘛,就那两种实现的方式:cab或者flash。
暂且不论本人从没学过的flash(事实上我已经做了一个flash调用摄像头的demo,虽然是调用成功了,但是对于拍照部分我实在是无力了,况且还有js控制flash部分的代码更是令人头痛。)。
本来之前本人已经开发了一个摄像头的cab,但是activeX嘛,只能给IE用用,兼容性和稳定性都不是很好。于是现在开始研究基于HTML5的在线摄像头。
首先看效果
Html5大家也渐渐的不那么陌生了,至少也得知道只有少数浏览器能很好的兼容HTML5吧。所以测试环境是Chrome 18以上版本,并且在测试前应开启浏览器的MediaStream:在地址栏输入about:flags,启用MediaStream。
然后就可以开始敲代码了。
不过值得注意的是,HTML5的测试不能再本地直接打开html网页,而是需要在http上访问html页面。直接搭建IIS,apache或者直接通过VS来查看html5页面。
1、 视频流
添加一个Video标签,并调用getUserMedia获得用户的摄像头视频流。
<video id="video" autoplay="" width="320px" height="240px"></video>
<script type="text/javascript">
var video = document.getElementById("video");
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;
if (navigator.getUserMedia) {
if (navigator.webkitURL) {
navigator.getUserMedia("video", function (stream) {
video.src = window.webkitURL.createObjectURL(stream);
}, function (error) { alert(error); });
}
else {
navigator.getUserMedia("video", function (stream) {
video.src = window.webkitURL.createObjectURL(stream);
}, function (error) { alert(error); });
}
}
else {
alert("navigator.getUserMedia Error");
}
</script>
这样,运行以后便可以直接在网页中调用摄像头了。运行后会提示
2、 拍照
用Canvas捕获Video标签的内容并显示,就做到了拍照的效果。
同样先添加一个canvas标签和一个button按钮
<canvas id="canvas1" width="320" height="240"></canvas>
button点击后调用JS,把Video标签中当前的图像显示到canvas中,效果就不做演示了
function scamera() {
var videoElement = document.getElementById('video');
var canvasObj = document.getElementById('canvas1');
var context1 = canvasObj.getContext('2d');
context1.fillStyle = "#ffffff";
context1.fillRect(0, 0, 320, 240);
context1.drawImage(videoElement, 0, 0, 320, 240);
//alert("PaiZhaoSuccess");
}
3.上传到服务器
上传到服务器还是用的老办法,把图片转为base64,通过ajax,毫无新意的保存到了服务器上。(需要注意的是,HTML5中toDataURL方法是转为的PNG格式,发送到服务端后会很大一张:320*240的照片要190kb,所以需要在服务器端转格式为jpg,变为10kb一张。详情见demo)
function uploadPhoto()//上传拍照的图片
{
showImgCode();
request = createRequest();
if (request == null) {
alert("Unable to create request");
}
else {
//alert("request.OK");
var base64Data = document.getElementById('textB64').value.replace(/\+/g, "%2B"); //对参数中的+号编码,防止丢失
var url = "AJAX/UploadPic.aspx";
request.open("POST", url, true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.onreadystatechange = responses;
request.send("&img=" + base64Data);
//alert("send.OK");
}
}
function responses() {
if (request.readyState == 4)//服务器处理结束
{
if (request.status == 200)//一切正常
{
if (request.responseText == "OK") {
alert("上传成功!");
}
else {
alert("上传失败!");
alert(request.responseText);
}
}
}
}
事实上,通过Html5的其他一些方法,甚至可以做出在线PS的功能,不过这些不在我的需求之内,现在也就不深入研究了。
分享到:
相关推荐
HTML5调用摄像头是现代网页应用中一个非常实用的功能,它允许用户在浏览器上直接使用摄像头进行视频捕捉,为各种在线交互提供了便利。这一特性主要依赖于HTML5的`<video>`元素和`getUserMedia` API,使得开发者可以...
总结来说,HTML5的摄像头访问功能极大地扩展了网页应用的潜力,提供了丰富的交互体验。开发者需要注意浏览器兼容性、用户隐私和安全问题,才能充分利用这一特性。在实际应用中,可以结合其他HTML5特性,如WebRTC,...
在这个"Html5调用摄像头读取二维码(全部源码)"项目中,我们主要探讨的是如何利用HTML5的 getUserMedia API 和二维码识别库来实现在网页上直接通过摄像头扫描二维码的功能。 1. **getUserMedia API**: 这是HTML5 ...
在线摄像头技术是现代互联网应用中的一个重要组成部分,尤其在视频聊天、远程教育、在线会议和直播等领域发挥着关键作用。...同时,尊重用户隐私和保障数据安全始终是开发在线摄像头应用时不可忽视的重要原则。
HTML5是一种强大的网页开发技术,它为网页应用带来了许多新的功能和特性,其中之一就是能够访问用户的本地摄像头。这个功能使得开发者可以创建丰富的交互式媒体应用,例如在线视频聊天、虚拟试衣间、实时图像处理等...
总结,HTML5调用摄像头拍照的功能极大地扩展了Web应用的可能性,提供了更加丰富的用户体验。通过`<input type="file">`、`getUserMedia`、`canvas`和`FormData`等API,我们可以轻松地实现在网页上拍照、预览和上传。...
HTML5是一种强大的网页开发标准,它极大地扩展了Web应用程序的功能,其中包括对摄像头的直接访问能力。这个特性使得开发者能够创建富媒体应用,如在线视频聊天、实时图像处理或虚拟现实体验,而无需依赖任何第三方...
标题中的“在线打开PC摄像头并拍照”指的是在Web应用程序中,通过编程技术访问用户的电脑摄像头进行实时预览和拍摄照片的功能。这种功能通常用于在线视频会议、远程教育、虚拟试衣间等多种应用场景。 C#是一种面向...
在现代Web应用中,利用HTML5(H5)技术实现在线照相功能已经变得非常普遍。这个功能允许用户通过浏览器直接调用设备的摄像头,无需安装任何插件或应用程序,大大提升了用户体验。以下是对"H5实现web调用摄像头在线...
HTML调用电脑摄像头是网页开发中的一个重要功能,它允许用户在浏览器中直接使用摄像头进行视频捕捉,例如用于视频聊天、照片拍摄或者人脸识别等应用。这一技术主要基于WebRTC(Web Real-Time Communication)标准,...
这一功能极大地丰富了网页应用的交互性,让用户无需离开页面就能获取和上传图片,常见于在线聊天、虚拟试衣间、证件照上传等应用场景。 在HTML5中,调用本地摄像头的关键是`<input type="file">`元素的`capture`...
综上所述,"html5打开摄像头播放视频示例"展示了HTML5的多媒体能力和getUserMedia API的使用,这对于开发交互式、富媒体的网页应用是非常有价值的。通过深入理解并实践这个示例,开发者能够更好地掌握如何在网页中...
getUserMedia API是HTML5的一个关键特性,允许网页应用请求用户设备的媒体输入,比如摄像头。通过调用navigator.mediaDevices.getUserMedia()方法,我们可以请求访问摄像头。例如: ```javascript navigator....
在IT领域,尤其是在Web开发中,实现摄像头实时监控功能是一个常见的需求,特别是在安全监控系统或者远程视频通信的应用中。在本篇文章中,我们将探讨如何利用HTML来实现海康摄像头的实时监控功能,这对于初学者或者...
HTML5是下一代网页标准,它引入了许多新的特性,其中之一就是对摄像头的支持...开发者可以通过这个例子学习到如何在网页上集成摄像头功能,提升用户体验,比如用于在线视频聊天、虚拟试衣间、视频录制等多种应用场景。
然而,"html5集成大华摄像头—demo.rar"这个压缩包文件显然涉及到一个特定场景的应用,即在HTML5环境中集成大华品牌的网络摄像头进行监控。 集成摄像头到网页中通常涉及以下几个关键知识点: 1. **WebRTC技术**:...
HTML5是下一代超文本标记语言,它为网页开发引入了许多新的功能和特性,极大地扩展了Web应用程序的...结合ASP和Java后端,可以构建出跨平台、功能强大的摄像头应用,尤其在移动设备上,提供了极大的便利性和创新性。
在现代Web开发中,HTML5引入了许多新的特性,其中之一就是通过JavaScript访问用户的摄像头。这个功能使得Web应用可以创建丰富的多媒体体验,例如视频聊天、在线照片编辑等。标题"html调用摄像头"和描述"html+js调用...