精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

AngularJS中使用HTML5攝像頭拍照

開發 前端
需要說一下,測試時只能通過http://url訪問才能使用,不能通過file://url方式訪問,即我們需要將代碼部署才能訪問,可以在Visual Studio、 java web、php中完成。

1. 項目背景

公司開發一個網站,在做用戶頭像修改的時候領導提到增加一個由攝像頭拍照實現修改頭像的功能。因為我們網站是基于Html5進行開發,所以就直接采用H5來實現拍照。起初覺得這個功能很簡單,但是做的時候才發現并不是那么簡單的。

 

[[162990]]

這是在AngularJs中成功實現調用攝像頭拍照并截圖上傳的例圖:

 

 

2. 如何調用攝像頭

  1. $scope.photoErr = false
  2. $scope.photoBtnDiable = true
  3. var mediaStream = null,track = null
  4.  
  5. navigator.getMedia = (navigator.getUserMedia || 
  6.                       navigator.webkitGetUserMedia || navigator.mozGetUserMedia || 
  7.                       navigator.msGetUserMedia); 
  8.         if (navigator.getMedia) { 
  9.             navigator.getMedia( 
  10.            { 
  11.                video: true 
  12.            }, 
  13.            // successCallback 
  14.            function (stream) { 
  15.                var s = window.URL.createObjectURL(stream); 
  16.                var video = document.getElementById('video'); 
  17.                video.src = window.URL.createObjectURL(stream); 
  18.                mediaStream = stream; 
  19.                track = stream.getTracks()[0]; 
  20.                $scope.photoBtnDiable = false;               $scope.$apply(); 
  21.            }, 
  22.            // errorCallback 
  23.            function (err) { 
  24.                $scope.errorPhoto(); 
  25.                console.log("The following error occured:" + err); 
  26.            }); 
  27.               } else { 
  28.             $scope.errorPhoto(); 
  29.         } 

代碼解析:

navigator為瀏覽器對象,包含瀏覽器的信息,這里就是用這個對象打開攝像頭。$scope為AndularJs語法。***步聲明 navigator.getMedia來調用瀏覽器不同的打開攝像頭函數,目前僅有getUserMedia、webkitGetUserMedia、 mozGetUserMedia、msGetUserMedia四種方式分別對應通用瀏覽器、Google瀏覽器、火狐瀏覽器和IE瀏覽器,瀏覽器會自動 判斷調用哪一個函數。第二步是調用打開瀏覽器,包含三個參數,分別為需要使用的多媒體類型、獲取成功返回的流數據處理函數以及操作失敗返回錯誤消息處理函 數。其中,使用時不僅可以設置視頻還能設置使用麥克風,設置方式為:

  1.       video: true, 
  2.       audio: true 

調用成功即打開攝像頭后返回視頻流數據,我們可以將流數據設置到video標簽在界面上實時顯示圖像。mediaStream用來記錄獲取到的流數據,track在Chrome瀏覽器中用來跟蹤攝像頭狀態,這兩個變量都能用來關閉攝像頭。

3. 拍照

  1. $scope.snap = function () { 
  2.         var canvas = document.createElement('canvas'); 
  3.             canvas.width = "400"
  4.             canvas.height = "304"
  5.  
  6.             var ctx = canvas.getContext('2d'); 
  7.             ctx.drawImage(video, 00400304); 
  8.             $scope.closeCamera(); 
  9.             $uibModalInstance.close(canvas.toDataURL("image/png")); 
  10. }; 

拍照時需要使用到canvas標簽,創建一個canvas標簽,設置我們需要拍照的尺寸大小,通過drawImage函數將video當前的圖像保 存到canvas標簽,***將圖像數據轉換為base64數據返回并關閉攝像頭,這樣就完成了我們的拍照功能。這里的$uibModalInstance 對象是我們項目中打開彈出層的一個對象,用來控制彈出層的顯示。

4. 如何關閉攝像頭

  1. $scope.closeCamera = function () { 
  2.             if (mediaStream != null) { 
  3.                 if (mediaStream.stop) { 
  4.                     mediaStream.stop(); 
  5.                 } 
  6.                 $scope.videosrc = ""
  7.             } 
  8.             if (track != null) { 
  9.                 if (track.stop) { 
  10.                     track.stop(); 
  11.                 } 
  12.             } 
  13.         } 

正如前面所說,關閉攝像頭的方式是通過mediaStream和track變量,只不過,track只能關閉Chrome瀏覽器中的攝像頭,這也是Chrome 45版本以上關閉攝像頭的方式。

5. 集成到AndularJs

事實上,前面所說的都是在AndularJs中實現的,當然,這里只是實現了拍照并返回拍照數據,我們想要在其他地方也使用,就需要將這部分獨立出 來,這里我們用到了AngularJs中的service機制,將這部分單獨做成一個service并在項目中注入,然后就可以在其他地方調用了。

 

  1. service注冊: 
  2.  
  3. app().registerService("h5TakePhotoService", function ($q, $uibModal) { 
  4.  
  5.         this.photo = function () { 
  6.             var deferred = $q.defer(); 
  7.             require([config.server + "/com/controllers/photo.js"], function () { 
  8.                 $uibModal.open({ 
  9.                     templateUrl: config.server + "/com/views/modal_take_photo.html"
  10.                     controller: "photoModalController"
  11.                     windowClass: "modal-photo" 
  12.                 }).result.then(function (e) { 
  13.                     deferred.resolve(e); 
  14.                 }); 
  15.             }); 
  16.             return deferred.promise; 
  17.         } 
  18.  
  19.     }); 

調用方式:

  1. $scope.takePhoto = function () { 
  2.       h5TakePhotoService.photo().then(function (res) { 
  3.            if (res != null && res != "") { 
  4.                $scope.myImage = res; 
  5.            } 
  6.       }); 

h5TakePhotoService為控制器中注入的拍照service對象,***處理返回的圖像數據,設置數據顯示到界面上。

6. 兼容問題

主要存在Chrome瀏覽器中,本地測試時,Chrome瀏覽器中能夠正常使用,但是部署到服務器后就不能正常使用,報錯消息 為 [object NavigatorUserMediaError],這是因為Chrome瀏覽器在使用攝像頭時只支持安全源訪問,所以只能通過 https訪問才能正常使用。

***需要說一下,測試時只能通過http://url訪問才能使用,不能通過file://url方式訪問,即我們需要將代碼部署才能訪問,可以在Visual Studio、 java web、php中完成。

 

 

 

本文鏈接:http://www.codeceo.com/article/angularjs-html5-take-photo.html

 

責任編輯:王雪燕 來源: 碼農網
相關推薦

2012-06-23 20:13:44

HTML5

2023-03-22 09:05:48

Linux舊相機網絡攝像頭

2012-05-18 15:10:22

HTML5

2009-08-21 17:11:05

C#攝像頭

2023-02-26 22:06:22

Electron瀏覽器開發

2020-06-04 10:59:10

JavaScript開發技術

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

2013-01-18 10:59:44

IBMdW

2011-09-08 13:53:20

Linux攝像頭

2009-08-21 17:24:18

C#控制攝像頭

2009-06-17 11:52:01

Linux

2011-05-12 09:01:29

HTML5

2012-05-03 08:08:34

Linux攝像頭

2016-12-28 07:41:46

科技新聞早報

2019-05-20 09:42:04

2011-09-13 15:51:11

PhoneGap AP
點贊
收藏

51CTO技術棧公眾號

国产劲爆久久| 怡红院红怡院欧美aⅴ怡春院| 亚洲看片一区| 亚洲欧美国产视频| 五月婷婷狠狠操| 国产三区在线观看| 成人h动漫精品一区二区| 97精品国产aⅴ7777| 91成人在线免费视频| 农村妇女一区二区| 亚洲午夜精品在线| 欧美精品久久久| 一本一道精品欧美中文字幕| 欧美阿v一级看视频| 国产婷婷成人久久av免费高清| 九九热免费精品视频| 污片在线免费观看| 欧美激情一区二区三区| 国产高清精品一区二区| 国产成人无码av| 一区二区三区在线| 国产一区二区三区丝袜| 日批在线观看视频| 欧美videos粗暴| 黑人巨大精品欧美一区二区一视频| 亚洲国产欧洲综合997久久| 丰满人妻一区二区| 日本午夜精品视频在线观看| 欧美日韩国产91| 黄色三级生活片| 国产乱人伦精品一区| 欧美日产国产精品| 黄色片久久久久| 国产丝袜精品丝袜| 亚洲欧洲av另类| 欧美日韩一区二区三区在线视频| 国产极品久久久| 免费高清不卡av| 51久久精品夜色国产麻豆| 国产精品久久久免费看| 国产亚洲一区二区三区啪| 日韩欧美一二三| 亚洲日本黄色片| 国产综合色区在线观看| 五月天网站亚洲| 国产成人生活片| 免费高清在线观看| 亚洲国产精品99久久久久久久久| 精品欧美一区二区精品久久| 国产成人三级在线播放| 久久se精品一区二区| 国产91在线高潮白浆在线观看| 日本在线视频免费| 午夜国产欧美理论在线播放| 精品国产视频在线| 天天摸日日摸狠狠添| 国产精品日韩精品中文字幕| 日韩av影片在线观看| 无码成人精品区在线观看| 欧美视频三区| 日韩欧美黄色影院| 黑人无套内谢中国美女| 欧美成人精品一级| 日韩欧美亚洲国产精品字幕久久久 | 成人av动漫| 欧美www视频| 人妻换人妻a片爽麻豆| 亚洲高清999| 欧美精品一区二区蜜臀亚洲| 亚洲精品成人无码毛片| 9l视频自拍九色9l视频成人| 日韩欧美一区在线观看| 国产精品成人免费一区久久羞羞| 日本免费精品| 欧美大片日本大片免费观看| 亚洲婷婷在线观看| 日本天堂一区| 在线观看免费高清视频97| 18啪啪污污免费网站| 999久久久免费精品国产| 久久精品福利视频| 国产性生活网站| 亚洲一区二区动漫| 国产精品444| 国产免费高清av| 国产91综合一区在线观看| 国产一区二区久久久| 日本亚洲一区| 国产精品另类一区| 国内少妇毛片视频| 亚洲欧美小说色综合小说一区| 欧美性受极品xxxx喷水| 日本美女久久久| 欧美理伦片在线播放| 亚洲天堂影视av| 永久久久久久久| av成人国产| 国产免费一区二区三区香蕉精| 99视频国产精品免费观看a| 成人h精品动漫一区二区三区| 日韩福利在线| 亚洲国产精品精华素| 欧美日韩在线视频首页| 久热精品在线观看视频| 国内自拍欧美| 中文字幕日韩精品在线| 国产午夜福利精品| 欧美a级理论片| www日韩av| 成人在线观看黄色| 亚洲va欧美va天堂v国产综合| 男人舔女人下面高潮视频| 久久99精品久久久野外观看| 精品视频偷偷看在线观看| 91久久久久久久久久久久久久| 影音先锋一区| 成人h视频在线| 男女视频在线观看免费| 亚洲国产乱码最新视频| 国产又大又黄又猛| 任我爽精品视频在线播放| 日韩在线免费视频| 国产精品va无码一区二区三区| 国产在线不卡一区| 亚洲国产精品一区在线观看不卡| a级片在线免费观看| 91精品一区二区三区在线观看| 欧美亚一区二区三区| 精品成人国产| 91香蕉亚洲精品| 国产一区二区三区福利| 精品国产福利视频| 中文字幕18页| 欧美国产激情| 91精品免费久久久久久久久| 九九热视频在线观看| 午夜欧美大尺度福利影院在线看| 国产三级精品三级在线| 成人精品亚洲| 国产精品久久av| 黄色片免费在线| 色呦呦国产精品| 亚洲男人在线天堂| 亚洲黄色三级| 国产精品乱子乱xxxx| 污视频在线免费观看网站| 欧美一区二区在线不卡| 欧美日韩色视频| 久久精品国产一区二区三 | 久久久精品高清| 欧美最新另类人妖| 国产99久久精品一区二区 夜夜躁日日躁 | 性xx色xx综合久久久xx| 精品久久久三级| 丁香花在线电影| 欧美精品一区二区在线观看| 波多野结衣亚洲色图| 国内精品伊人久久久久影院对白| 亚洲精品一区二| 色狠狠一区二区三区| 中文字幕日韩在线观看| 中文字幕激情视频| 国产精品美女久久久久久2018| 第四色婷婷基地| 久久视频精品| 亚洲sss综合天堂久久| a在线免费观看| 日韩精品专区在线影院观看| 午夜写真片福利电影网| 成人精品免费网站| 久久综合色视频| 一本久久青青| 国产精品久久久久久网站| 91社区在线| 欧美一级日韩一级| 国产一级做a爱免费视频| av资源网一区| 九九视频精品在线观看| 欧美黄色大片在线观看| 亚洲精品欧美日韩专区| 黄色小说在线播放| 亚洲精品中文字幕女同| 中文在线字幕av| 亚洲精品视频在线| 国产一级二级视频| 免费成人在线网站| 欧美在线观看黄| 欧美自拍视频| 成人a级免费视频| av福利导福航大全在线| 在线观看欧美日韩| 亚洲av无码专区在线| 欧美色xxxx| 国产精品夜夜夜爽阿娇| 国产不卡在线一区| 日本三区在线观看| 伊人久久大香线| 蜜桃视频在线观看成人| 99久热在线精品视频观看| 91精品国产91久久久久福利| av片在线看| 亚洲福利视频久久| 中文字幕一区2区3区| 亚洲福中文字幕伊人影院| 国产一级久久久久毛片精品| 国产凹凸在线观看一区二区| 熟女人妇 成熟妇女系列视频| 天天超碰亚洲| 欧美一区二区视频17c| 警花av一区二区三区| 国产精品久久久999| xxx性欧美| 日韩在线观看免费全| 色视频在线观看| 欧美一区二区福利在线| 在线免费观看av网址| 亚洲影院理伦片| 日本视频在线免费| 2020国产精品| 性囗交免费视频观看| 国产中文一区二区三区| 中国丰满人妻videoshd| 欧美日韩国产欧| 综合操久久久| 欧美日韩国产在线观看网站| 久久99精品久久久久久水蜜桃 | 亚洲性猛交xxxx乱大交| 国产成人午夜视频| 韩国一区二区在线播放| 日本sm残虐另类| 成人观看免费完整观看| 亚洲二区视频| 国产女教师bbwbbwbbw| 色综合久久一区二区三区| 欧美一二三区| 免费萌白酱国产一区二区三区| 99热99热| 日韩精品中文字幕一区二区| 成人欧美在线观看| 日韩亚洲国产免费| 国产精品中文字幕在线观看| 毛片无码国产| 欧美在线精品免播放器视频| 99爱在线观看| 91国产一区在线| 变态调教一区二区三区| 久久99视频免费| 日韩少妇视频| 欧美激情影音先锋| 欧美hdxxxx| 欧美精品aaa| 狂野欧美性猛交xxxxx视频| 九九久久国产精品| 中文字幕中文字幕在线十八区 | 免费国产羞羞网站美图| ...xxx性欧美| 欧美日韩亚洲国产另类| 亚洲美女视频一区| 麻豆亚洲av成人无码久久精品| 亚洲女同一区二区| 成熟的女同志hd| 亚洲一区二区三区免费视频| 久久久久久久久久久网| 亚洲成人中文在线| 国产尤物在线视频| 一本到不卡精品视频在线观看| 性色av免费观看| 欧美色偷偷大香| 国产女人18毛片水真多| 日韩视频免费直播| 日韩一级中文字幕| 亚洲欧洲在线看| 91在线看黄| 欧美成人午夜激情视频| 99riav视频在线观看| 国产不卡视频在线| 亚洲网站三级| 国产精品9999久久久久仙踪林| 久久男人av| 日本亚洲欧洲精品| 一区二区日韩欧美| 久色视频在线播放| 日本网站在线观看一区二区三区| 九一精品久久久| 成人av在线影院| 国产中年熟女高潮大集合| 国产精品久久精品日日| 欧美三级在线免费观看| 一本久久a久久精品亚洲| 91中文字幕在线播放| 亚洲精品一区二区三区福利| 欧美91精品久久久久国产性生爱| 色青青草原桃花久久综合| 久久香蕉av| 国产经典一区二区| 欧美一级大片在线视频| 欧美日韩精品免费看| 亚洲自拍偷拍网| 国产男女在线观看| 国产资源在线一区| aaaaa级少妇高潮大片免费看| 国产精品三级视频| 日本一区二区欧美| 7777精品伊人久久久大香线蕉 | 在线观看中文字幕视频| 欧美日韩黄视频| 天天干,夜夜爽| 日韩视频免费观看| 欧美大胆成人| 国产成人一区二区三区免费看| 欧美伦理在线视频| 国产精品无码一区二区在线| 国产在线视频一区二区| 91成人破解版| 亚洲sss视频在线视频| 91片黄在线观看喷潮| 精品视频在线播放免| 色婷婷在线播放| 国产一区二区色| 国产麻豆精品久久| 国产无限制自拍| 国产精品中文有码| 午夜黄色福利视频| 色综合久久中文字幕| 黑人乱码一区二区三区av| 久久精品国产欧美亚洲人人爽| 久久99久久99精品免观看软件| 国语精品免费视频| 国产专区一区| 久久6免费视频| 国产精品麻豆99久久久久久| 7799精品视频天天看| 亚洲国产精久久久久久| 污的网站在线观看| 亚洲xxx大片| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 久久精品国产成人精品| 黄色成人小视频| 婷婷久久青草热一区二区| 久久久久久久欧美精品| av网页在线观看| 亚洲福利一区二区| 日韩一区免费视频| 久久久久久久一区二区三区| 亚洲大奶少妇| 国产成人永久免费视频| 国产精品中文字幕欧美| 欧美卡一卡二卡三| 日韩写真欧美这视频| a级网站在线播放| 亚洲xxxxx电影| 久久久久久久久久久妇女| 五月天激情视频在线观看| 国产日韩欧美精品电影三级在线 | 亚洲免费影视| 青青草成人免费视频| 精品国产福利视频| 免费人成黄页在线观看忧物| 日韩av电影在线网| 精品日韩欧美一区| 男生操女生视频在线观看 | 亚洲美女又黄又爽在线观看| 中日韩脚交footjobhd| 欧美精品久久| 蜜桃一区二区三区四区| 久久国产波多野结衣| 日韩欧美激情在线| 美女搞黄视频在线观看| 日本精品国语自产拍在线观看| 裸体在线国模精品偷拍| 麻豆精品一区二区三区视频| 精品国产欧美一区二区| 亚洲精品日产| 亚洲午夜精品久久| 国产精品影视在线| 日本在线观看视频网站| 亚洲天堂av电影| 精品一区二区三区视频在线播放| 日韩精品一区二区免费| 久久综合九色欧美综合狠狠| 国产精品自拍第一页| 久久亚洲国产精品| 日本成人中文| 国产大片一区二区三区| 亚洲成av人片一区二区| 成人精品一区二区| av在线亚洲男人的天堂| 美女久久一区| 亚洲视频重口味| 亚洲乱码一区av黑人高潮| www 久久久| 欧美一区二区三区爽大粗免费| 国产精品视频你懂的| 黄色美女一级片| 国产免费成人av| 亚洲欧美不卡| 青青草激情视频| 亚洲乱码av中文一区二区| 久久av网站| 五月天婷婷激情视频|