IE与非IE浏览器调用PC摄像头拍摄并且上传
需要下载源码以及相关文件的可以到(不好意思,之前上传的不知道怎么回事就没了)
http://download.csdn.net/detail/u013946285/9886280 中下载
一,flash调用摄像头
在IE中对HTML5的支持不是很好,所以在IE中调用摄像头使用的是FLASH,只要IE中安装Flash插件即可,页面代码如下:
使用Object、embed标签获取flash并且调用摄像头
- <object style="z-index: 100" id="My_Cam" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
- codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
- height="400" viewastext="在线拍照" width="500">
- <param name="allowScriptAccess" value="sameDomain" />
- <param name="movie" value="../../js/MyCamera.swf" />
- <param name="quality" value="high" />
- <param name="bgcolor" value="#ffffff" />
- <param name="wmode" value="transparent" />
- <embed style="z-index: 100" align="middle" allowscriptaccess="sameDomain" bgcolor="#ffffff" height="400"
- name="My_Cam" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" wmode="transparent"
- src="../../js/MyCamera.swf" type="application/x-shockwave-flash" width="500"></embed>
- </object>
<object style="z-index: 100" id="My_Cam" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"height="400" viewastext="在线拍照" width="500"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="../../js/MyCamera.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="wmode" value="transparent" /><embed style="z-index: 100" align="middle" allowscriptaccess="sameDomain" bgcolor="#ffffff" height="400"name="My_Cam" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" wmode="transparent"src="../../js/MyCamera.swf" type="application/x-shockwave-flash" width="500"></embed></object>
点击允许即可,页面效果如下:
点击拍照后,通过MY_CAM (Object标签ID)获取document[id]后调用GetBase64Code()获取base64,传入后台通过BASE64Decoder转换成图片即可。
二,HTML5调用摄像头
在非IE浏览器下,可以使用HTML5调用摄像头完成拍照上传操作,在html页面代码如下:
- <video id="video" width="500" height="400" autoplay ></video>
- <canvas id="canvas" width="500" height="400" style="display:none;"></canvas>
<video id="video" width="500" height="400" autoplay ></video><canvas id="canvas" width="500" height="400" style="display:none;"></canvas>
通过加载js代码,会通过html5调用摄像头,js代码如下:
- //Put event listeners into place
- window.addEventListener("DOMContentLoaded", function() {
- // Grab elements, create settings, etc.
- canvas = document.getElementById("canvas"),
- context = canvas.getContext("2d"),
- video = document.getElementById("video"),
- videoObj = { "video": true },
- errBack = function(error) {
- console.log("Video capture error: ", error.code);
- };
- // Put video listeners into place
- if(navigator.getUserMedia) { // Standard
- navigator.getUserMedia(videoObj, function(stream) {
- video.src = stream;
- video.play();
- }, errBack);
- } else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
- navigator.webkitGetUserMedia(videoObj, function(stream){
- video.src = window.webkitURL.createObjectURL(stream);
- video.play();
- }, errBack);
- }
- else if(navigator.mozGetUserMedia) { // Firefox-prefixed
- navigator.mozGetUserMedia(videoObj, function(stream){
- video.src = window.URL.createObjectURL(stream);
- video.play();
- }, errBack);
- }
- }, false);
//Put event listeners into placewindow.addEventListener("DOMContentLoaded", function() {// Grab elements, create settings, etc.canvas = document.getElementById("canvas"),context = canvas.getContext("2d"),video = document.getElementById("video"),videoObj = { "video": true },errBack = function(error) {console.log("Video capture error: ", error.code); };// Put video listeners into placeif(navigator.getUserMedia) { // Standardnavigator.getUserMedia(videoObj, function(stream) {video.src = stream;video.play();}, errBack);} else if(navigator.webkitGetUserMedia) { // WebKit-prefixednavigator.webkitGetUserMedia(videoObj, function(stream){video.src = window.webkitURL.createObjectURL(stream);video.play();}, errBack);}else if(navigator.mozGetUserMedia) { // Firefox-prefixednavigator.mozGetUserMedia(videoObj, function(stream){video.src = window.URL.createObjectURL(stream);video.play();}, errBack);}}, false);
页面效果如flash中展示一样,点击拍照按钮后,首先把拍照画在画布上,然后从画布中取得数据,并且将数据转换为base64,js代码如下:
- //拍照画在画布上
- context.drawImage(video,0,0,500,400);
- var canvas = document.getElementById("canvas");
- //从画布上获取照片数据
- var imgData = canvas.toDataURL();
- //将图片转换为Base64
- var base64Data = imgData.substr(22);
//拍照画在画布上context.drawImage(video,0,0,500,400);var canvas = document.getElementById("canvas"); //从画布上获取照片数据var imgData = canvas.toDataURL();//将图片转换为Base64var base64Data = imgData.substr(22);
传入后台通过BASE64Decoder转换成图片即可。以上方法完全通过实际测试!
以上方法都通过测试,如下图(IE):(选择允许)
下面是非IE的浏览器,如下图(非IE)选择“共享选中的设备”
经过实际测试支持ie与非ie的浏览器,其他浏览器就不上传了 太麻烦啦
IE与非IE浏览器调用PC摄像头拍摄并且上传相关推荐
- 摄像头网页服务器,js调用本地摄像头拍照并上传到web服务器
[实例简介] js调用本地摄像头拍照并上传到web服务器.后台使用java实现图片的接收和存储,上传的图片默认保存到项目下的images文件夹中. [实例截图] [核心代码] MyCamera └── ...
- Electron应用中实现调用外接摄像头并拍照上传
背景 基于Electron实现的pc端智能验机应用,近期迭代了一个新的功能,需求是通过电脑外接摄像头对手机屏幕进行拍照,拍照后需将照片上传至服务端进行屏幕信息比对,确定被检测屏幕是否为原厂屏. 需求分 ...
- js调用pc摄像头实现拍照、录视频等,新版Chrome无访问http页面无法打开麦克风、摄像头
js调用pc摄像头实现拍照.录视频等,新版Chrome无访问http页面无法打开麦克风.摄像头 新版Chrome配置 vue环境下的前端 function部分 ##由于没有https环境,只有http ...
- 关于采用浏览器调用手机摄像头问题
之前一直做后台开发,最近项目客户想要采用android平板扫描物品条码,所以开始在网上看了众多关于采用浏览器调用摄像头的问题,让我十分疑惑的是,为什么很多解决案例并没有讲到移动端浏览器的支持问题,以致 ...
- html 调用pc摄像头,HTML调用PC摄像头
使用HTML5中的canvas和video技术实现调用PC摄像头 1.[代码][HTML]代码 HTML5调用电脑摄像头实例 window.addEventListener("DOMCont ...
- HTML调用PC摄像头【申明:来源于网络】
HTML调用PC摄像头[申明:来源于网络] ---- 地址:http://www.oschina.net/code/snippet_2440934_55195 <!DOCTYPE html> ...
- Vue 调用PC摄像头拍照
项目需求:可以本地上传头像,也可以选择拍摄头像上传. 组件: Camera组件:实现 打开.关闭摄像头.绘制.显示图片.用于上传 CameraDialog组件:使用ElementUI dialog组件 ...
- Unity调用PC摄像头
Unity调用PC摄像头 绑定在一个带有Render组件的物体上就行了. 本帖隐藏的内容 [html] view plaincopyprint? using UnityEngine; ...
- 在网页中调用摄像头实现拍照上传 - 高拍仪二次开发
在网页中调用摄像头实现拍照上传 高拍仪二次开发 在一些公共部门的办事处,比如银行.护照办理中心.税务等,我们可能会注意到办公桌上摆着这样一台机器.办公人员用它拍摄各种证件.文件.表格,有时候还 ...
最新文章
- python处在哪个阶段_python 基础复习
- 手抖有救了!DeblurGAN消除运动模糊效果惊人 | 附论文+代码
- 计算机与计算科学是属什么专业,被录取到信息与计算科学专业,这个专业什么性质,发展前景如何?...
- msm8953之串口dts配置
- 地图下面的标尺是什么意思_房屋产权70年产权吧,下面的使用年限是什么意思?...
- python哨兵循环_Python:deadloop之非模态交互界面(模态循环)(哨兵循环)
- ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory
- 0076-小升初1:生日蛋糕
- 如何使用QoS管理分配存储IOPS?
- Dev控件发布到服务器上后样式表不显示解决方法
- nginx集群配置流程
- 每日一书丨金融反欺诈的底层逻辑
- 【raid5数据恢复案例】两组分别由4块SAS硬盘组成的raid5阵列,两组阵列组成lvm结构,出现故障后数据恢复方案
- 超实用的Mac风扇控制系统:Macs Fan Control Pro mac中文版
- FX5u plc 如何实现网络远程通讯
- android 键盘自适应,Android输入框布局如何随键盘变化
- 根据起始点经纬度、距离、方位角计算目标点经纬度的方法
- 学完高性能计算后的发展怎么样?
- 利用python识别图片中的条码及条码图片矫正和增强!
- c语言作用域详解,C语言之作用域