需要下载源码以及相关文件的可以到(不好意思,之前上传的不知道怎么回事就没了)

http://download.csdn.net/detail/u013946285/9886280 中下载

一,flash调用摄像头

在IE中对HTML5的支持不是很好,所以在IE中调用摄像头使用的是FLASH,只要IE中安装Flash插件即可,页面代码如下:

使用Object、embed标签获取flash并且调用摄像头

[html] view plaincopyprint?
  1. <object style="z-index: 100" id="My_Cam" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
  2. codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
  3. height="400" viewastext="在线拍照" width="500">
  4. <param name="allowScriptAccess" value="sameDomain" />
  5. <param name="movie" value="../../js/MyCamera.swf" />
  6. <param name="quality" value="high" />
  7. <param name="bgcolor" value="#ffffff" />
  8. <param name="wmode" value="transparent" />
  9. <embed style="z-index: 100" align="middle" allowscriptaccess="sameDomain" bgcolor="#ffffff" height="400"
  10. name="My_Cam" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high"  wmode="transparent"
  11. src="../../js/MyCamera.swf" type="application/x-shockwave-flash" width="500"></embed>
  12. </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页面代码如下:

[html] view plaincopyprint?
  1. <video id="video" width="500" height="400" autoplay ></video>
  2. <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代码如下:

[javascript] view plaincopyprint?
  1. //Put event listeners into place
  2. window.addEventListener("DOMContentLoaded"function() {
  3. // Grab elements, create settings, etc.
  4. canvas = document.getElementById("canvas"),
  5. context = canvas.getContext("2d"),
  6. video = document.getElementById("video"),
  7. videoObj = { "video"true },
  8. errBack = function(error) {
  9. console.log("Video capture error: ", error.code);
  10. };
  11. // Put video listeners into place
  12. if(navigator.getUserMedia) { // Standard
  13. navigator.getUserMedia(videoObj, function(stream) {
  14. video.src = stream;
  15. video.play();
  16. }, errBack);
  17. else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
  18. navigator.webkitGetUserMedia(videoObj, function(stream){
  19. video.src = window.webkitURL.createObjectURL(stream);
  20. video.play();
  21. }, errBack);
  22. }
  23. else if(navigator.mozGetUserMedia) { // Firefox-prefixed
  24. navigator.mozGetUserMedia(videoObj, function(stream){
  25. video.src = window.URL.createObjectURL(stream);
  26. video.play();
  27. }, errBack);
  28. }
  29. }, 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代码如下:

[javascript] view plaincopyprint?
  1. //拍照画在画布上
  2. context.drawImage(video,0,0,500,400);
  3. var canvas = document.getElementById("canvas");
  4. //从画布上获取照片数据
  5. var imgData = canvas.toDataURL();
  6. //将图片转换为Base64
  7. 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摄像头拍摄并且上传相关推荐

  1. 摄像头网页服务器,js调用本地摄像头拍照并上传到web服务器

    [实例简介] js调用本地摄像头拍照并上传到web服务器.后台使用java实现图片的接收和存储,上传的图片默认保存到项目下的images文件夹中. [实例截图] [核心代码] MyCamera └── ...

  2. Electron应用中实现调用外接摄像头并拍照上传

    背景 基于Electron实现的pc端智能验机应用,近期迭代了一个新的功能,需求是通过电脑外接摄像头对手机屏幕进行拍照,拍照后需将照片上传至服务端进行屏幕信息比对,确定被检测屏幕是否为原厂屏. 需求分 ...

  3. js调用pc摄像头实现拍照、录视频等,新版Chrome无访问http页面无法打开麦克风、摄像头

    js调用pc摄像头实现拍照.录视频等,新版Chrome无访问http页面无法打开麦克风.摄像头 新版Chrome配置 vue环境下的前端 function部分 ##由于没有https环境,只有http ...

  4. 关于采用浏览器调用手机摄像头问题

    之前一直做后台开发,最近项目客户想要采用android平板扫描物品条码,所以开始在网上看了众多关于采用浏览器调用摄像头的问题,让我十分疑惑的是,为什么很多解决案例并没有讲到移动端浏览器的支持问题,以致 ...

  5. html 调用pc摄像头,HTML调用PC摄像头

    使用HTML5中的canvas和video技术实现调用PC摄像头 1.[代码][HTML]代码 HTML5调用电脑摄像头实例 window.addEventListener("DOMCont ...

  6. HTML调用PC摄像头【申明:来源于网络】

    HTML调用PC摄像头[申明:来源于网络] ---- 地址:http://www.oschina.net/code/snippet_2440934_55195 <!DOCTYPE html> ...

  7. Vue 调用PC摄像头拍照

    项目需求:可以本地上传头像,也可以选择拍摄头像上传. 组件: Camera组件:实现 打开.关闭摄像头.绘制.显示图片.用于上传 CameraDialog组件:使用ElementUI dialog组件 ...

  8. Unity调用PC摄像头

     Unity调用PC摄像头    绑定在一个带有Render组件的物体上就行了. 本帖隐藏的内容 [html] view plaincopyprint?  using UnityEngine;  ...

  9. 在网页中调用摄像头实现拍照上传 - 高拍仪二次开发

    在网页中调用摄像头实现拍照上传 高拍仪二次开发     在一些公共部门的办事处,比如银行.护照办理中心.税务等,我们可能会注意到办公桌上摆着这样一台机器.办公人员用它拍摄各种证件.文件.表格,有时候还 ...

最新文章

  1. python处在哪个阶段_python 基础复习
  2. 手抖有救了!DeblurGAN消除运动模糊效果惊人 | 附论文+代码
  3. 计算机与计算科学是属什么专业,被录取到信息与计算科学专业,这个专业什么性质,发展前景如何?...
  4. msm8953之串口dts配置
  5. 地图下面的标尺是什么意思_房屋产权70年产权吧,下面的使用年限是什么意思?...
  6. python哨兵循环_Python:deadloop之非模态交互界面(模态循环)(哨兵循环)
  7. ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory
  8. 0076-小升初1:生日蛋糕
  9. 如何使用QoS管理分配存储IOPS?
  10. Dev控件发布到服务器上后样式表不显示解决方法
  11. nginx集群配置流程
  12. 每日一书丨金融反欺诈的底层逻辑
  13. 【raid5数据恢复案例】两组分别由4块SAS硬盘组成的raid5阵列,两组阵列组成lvm结构,出现故障后数据恢复方案
  14. 超实用的Mac风扇控制系统:Macs Fan Control Pro mac中文版
  15. FX5u plc 如何实现网络远程通讯
  16. android 键盘自适应,Android输入框布局如何随键盘变化
  17. 根据起始点经纬度、距离、方位角计算目标点经纬度的方法
  18. 学完高性能计算后的发展怎么样?
  19. 利用python识别图片中的条码及条码图片矫正和增强!
  20. c语言作用域详解,C语言之作用域

热门文章

  1. mysql left用法
  2. tof相机简介及三维坐标转化,plotly画3D点云
  3. 回顾敏捷实践踩过的坑:如果重新做,我会这样做(一)
  4. 谷粒商城 Day09 首页分类与SpEL动态缓存切面
  5. 10+年程序员总结的20+条经验教训
  6. 计算机怎么设置网络,电脑怎么设置网络
  7. 关于买房的后的人生感悟
  8. JAVA程序员常用访问网址
  9. 爬虫之 --爬取豆瓣电影
  10. 河南省计算机报名流程图,报考流程