成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HTML 5在線攝像頭應用

開發 前端
本來之前本人已經開發了一個攝像頭的cab,但是activeX嘛,只能給IE用用,兼容性和穩定性都不是很好。于是現在開始研究基于HTML5的在線攝像頭。

最近在搞一個考試系統,系統要求要有隨機拍照的功能,并且攝像頭能夠收到js的控制。在線攝像頭嘛,就那兩種實現的方式:cab或者flash。

暫且不論本人從沒學過的flash(事實上我已經做了一個flash調用攝像頭的demo,雖然是調用成功了,但是對于拍照部分我實在是無力了,況且還有js控制flash部分的代碼更是令人頭痛。)。

本來之前本人已經開發了一個攝像頭的cab,但是activeX嘛,只能給IE用用,兼容性和穩定性都不是很好。于是現在開始研究基于HTML5的在線攝像頭。

首先看效果

Html5大家也漸漸的不那么陌生了,至少也得知道只有少數瀏覽器能很好的兼容HTML5吧。所以測試環境是Chrome 18以上版本,并且在測試前應開啟瀏覽器的MediaStream:在地址欄輸入about:flags,啟用MediaStream。

然后就可以開始敲代碼了。

#p#

不過值得注意的是,HTML5的測試不能再本地直接打開html網頁,而是需要在http上訪問html頁面。直接搭建IIS,apache或者直接通過VS來查看html5頁面。

1、  視頻流添加一個Video標簽,并調用getUserMedia獲得用戶的攝像頭視頻流。

  1. <video id="video" autoplay="" width="320px" height="240px"></video>         
  2.         <script type="text/javascript"> 
  3.             var video = document.getElementById("video");  
  4.             navigatornavigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;  
  5.             if (navigator.getUserMedia) {  
  6.                 if (navigator.webkitURL) {  
  7.                     navigator.getUserMedia("video", function (stream) {  
  8.                         video.src = window.webkitURL.createObjectURL(stream);  
  9.                     }, function (error) { alert(error); });  
  10.                 }  
  11.                 else {  
  12.                     navigator.getUserMedia("video", function (stream) {  
  13.                         video.src = window.webkitURL.createObjectURL(stream);  
  14.                     }, function (error) { alert(error); });  
  15.                 }  
  16.             }  
  17.             else {  
  18.                 alert("navigator.getUserMedia  Error");  
  19.             }  
  20.         </script> 

這樣,運行以后便可以直接在網頁中調用攝像頭了。運行后會提示

2、  拍照

用Canvas捕獲Video標簽的內容并顯示,就做到了拍照的效果。

同樣先添加一個canvas標簽和一個button按鈕

  1. <canvas id="canvas1" width="320" height="240"></canvas>  

button點擊后調用JS,把Video標簽中當前的圖像顯示到canvas中,效果就不做演示了

  1. function scamera() {  
  2.                 var videoElement = document.getElementById('video');  
  3.                 var canvasObj = document.getElementById('canvas1');  
  4.                 var context1 = canvasObj.getContext('2d');  
  5.                 context1.fillStyle = "#ffffff";  
  6.                 context1.fillRect(0, 0, 320, 240);  
  7.                 context1.drawImage(videoElement, 0, 0, 320, 240);  
  8.                 //alert("PaiZhaoSuccess");  
  9.             } 

3.上傳到服務器

上傳到服務器還是用的老辦法,把圖片轉為base64,通過ajax,毫無新意的保存到了服務器上。(需要注意的是,HTML5中toDataURL方法是轉為的PNG格式,發送到服務端后會很大一張:320*240的照片要190kb,所以需要在服務器端轉格式為jpg,變為10kb一張。詳情見demo)

  1. function uploadPhoto()//上傳拍照的圖片  
  2.             {  
  3.                 showImgCode();  
  4.                 request = createRequest();  
  5.                 if (request == null) {  
  6.                     alert("Unable to create request");  
  7.                 }  
  8.                 else {  
  9.                     //alert("request.OK");  
  10.                     var base64Data = document.getElementById('textB64').value.replace(/\+/g, "%2B"); //對參數中的+號編碼,防止丟失  
  11.                     var url = "AJAX/UploadPic.aspx";  
  12.                     request.open("POST", url, true);  
  13.                     request.setRequestHeader("Content-type""application/x-www-form-urlencoded");  
  14.                     request.onreadystatechange = responses;  
  15.                     request.send("&img=" + base64Data);  
  16.                     //alert("send.OK");  
  17.                 }  
  18.             }  
  19.             function responses() {  
  20.                 if (request.readyState == 4)//服務器處理結束  
  21.                 {  
  22.                     if (request.status == 200)//一切正常  
  23.                     {  
  24.                         if (request.responseText == "OK") {  
  25.                             alert("上傳成功!");  
  26.                         }  
  27.                         else {  
  28.                             alert("上傳失敗!");  
  29.                             alert(request.responseText);  
  30.                         }  
  31.                     }  
  32.                 }  
  33.             } 

事實上,通過Html5的其他一些方法,甚至可以做出在線PS的功能,不過這些不在我的需求之內,現在也就不深入研究了。

好了,就這么多,更詳細的內容見DEMO中代碼:Download

原文鏈接:http://www.cnblogs.com/singlex/archive/2012/06/06/2538339.html

【編輯推薦】

責任編輯:張偉 來源: SingleX的博客
相關推薦

2016-02-22 10:30:38

AngularJSHTML5攝像頭

2013-03-21 09:56:09

2021-03-11 10:21:55

特斯拉黑客網絡攻擊

2011-04-25 09:16:10

Windows 8

2024-11-29 16:51:18

2017-06-20 11:45:52

2012-05-18 15:10:22

HTML5

2011-09-08 13:53:20

Linux攝像頭

2009-06-17 11:52:01

Linux

2009-08-21 17:24:18

C#控制攝像頭

2016-12-28 07:41:46

科技新聞早報

2023-02-26 22:06:22

Electron瀏覽器開發

2019-05-20 09:42:04

2011-09-13 15:51:11

PhoneGap AP

2018-06-20 11:54:54

2014-07-16 13:36:30

MotionLinux監控

2020-06-04 10:59:10

JavaScript開發技術

2016-03-31 14:58:18

2021-03-18 08:52:32

黑客攻擊攝像頭

2009-08-21 17:17:49

C#攝像頭編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品视频不卡 | 国产精品久久久久久中文字 | 亚洲美女一区二区三区 | 免费在线观看一级毛片 | 99re在线视频观看 | 好姑娘影视在线观看高清 | 精品一区欧美 | 日本久久久一区二区三区 | 美女爽到呻吟久久久久 | 日本手机在线 | 国产一级毛片视频 | 免费看av大片 | 精品国产乱码久久久久久中文 | 韩国精品在线观看 | 久久久久久国产精品免费免费男同 | 蜜臀av日日欢夜夜爽一区 | 国产精品网址 | 国产日韩欧美一区二区 | 久久69精品久久久久久国产越南 | 特级丰满少妇一级aaaa爱毛片 | 久久久久中文字幕 | 在线成人免费视频 | 亚洲精品在线看 | 国产精品一区二区av | 中文字幕成人在线 | 天堂av影院 | 亚洲免费一区二区 | 91最新入口 | 在线播放国产视频 | 毛片毛片毛片毛片 | 亚洲精品久久久久久一区二区 | 一级黄色绿像片 | 99久久久久久久久 | 黄色片免费看视频 | 色久影院 | 亚洲一区二区三区在线免费 | 国产一区二区在线免费观看 | 一级毛片视频 | 高清视频一区二区三区 | 国产精品国产精品国产专区不片 | 日韩看片 |