精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产日产久久高清欧美一区| 午夜精品在线看| 国产美女高潮久久白浆| 91日韩中文字幕| 66精品视频在线观看| 疯狂做受xxxx欧美肥白少妇| 日韩电影在线播放| 国产suv精品一区二区69| 亚洲精华国产欧美| 中文字幕精品在线| 日韩av成人网| 成人免费av电影| 一区二区三区国产豹纹内裤在线| 久久久水蜜桃| 国产美女精品视频国产| 亚洲影院免费| 久久精品成人欧美大片古装| 一本色道综合久久欧美日韩精品| 福利一区二区免费视频| 亚洲国产精品尤物yw在线观看| 欧美日韩系列| 国产综合视频在线| 蜜臀精品一区二区三区在线观看 | 色婷婷综合久久| 99精品偷自拍| 性感美女视频一二三| 国产欧美一区二区三区久久| 国内精品久久久久伊人av| 九九九九九伊人| 成人做爰69片免费| 国产ts在线播放| 国产精品一区二区三区av| 日韩欧美在线看| av日韩在线看| 日本在线人成| 91在线小视频| 99re视频| 国产精品1234| 秋霞午夜鲁丝一区二区老狼| 色综合中文字幕国产| 在线观看成人av| 美女欧美视频在线观看免费| 成人av网在线| 亚洲一区久久久| 久久久久久久免费| 18欧美亚洲精品| 欧美精品一区在线播放| 国产艳俗歌舞表演hd| 9l视频自拍九色9l视频成人| 欧美剧情电影在线观看完整版免费励志电影 | 欧美孕妇孕交xxⅹ孕妇交| 国产老妇另类xxxxx| 国产精品自产拍高潮在线观看| 亚洲GV成人无码久久精品| 亚洲韩日在线| 久久久久久久亚洲精品| 私库av在线播放| 香蕉综合视频| 久久精品国产久精国产思思| 精品无码一区二区三区蜜臀| 亚洲国产精品日韩专区av有中文| 最近2019好看的中文字幕免费| 国产精品扒开腿做爽爽| 国产一区二区三区网| 亚洲图片在区色| 69精品无码成人久久久久久| 国产日产一区| 中文国产成人精品| 三级黄色片在线观看| 欧美电影一区| 久久精品视频亚洲| 九九精品在线观看视频| 亚洲无线一线二线三线区别av| 久久久久久久久91| 国产 日韩 欧美 在线| 老牛嫩草一区二区三区日本 | 国产高清精品久久久久| 不卡一区二区三区视频| 色综合免费视频| 久久久九九九九| 黄瓜视频免费观看在线观看www| 美女隐私在线观看| 一区二区三区免费网站| 免费在线a视频| 中文.日本.精品| 欧美精品成人一区二区三区四区| 18深夜在线观看免费视频| 欧美理论电影在线精品| 中文字幕日韩欧美| 久久激情免费视频| 久久国产精品亚洲77777| 国产女同一区二区| 亚洲精品一区二区三区新线路| 成人av网址在线| 日韩精彩视频| 午夜av在线播放| 欧美日韩国产影院| 天天干天天草天天| 久久a级毛片毛片免费观看| 亚洲无线码在线一区观看| 国产成人久久久久| 久久电影一区| 亚洲一区二区三区久久| 水中色av综合| 亚洲欧美一区二区不卡| 男人揉女人奶房视频60分| 成人亚洲精品| 日韩精品一区二区视频| 天天鲁一鲁摸一摸爽一爽| 夜夜精品视频| 亚洲最大的av网站| 国产在线网站| 亚洲电影一区二区| 五月天开心婷婷| 久久成人av| 91精品国产99| 亚洲av无码乱码国产精品久久| 国产亚洲成aⅴ人片在线观看| 乱熟女高潮一区二区在线| 先锋欧美三级| 日韩精品视频在线| 国产一级片免费| 麻豆freexxxx性91精品| 久久国产精品精品国产色婷婷| 1区2区在线观看| 欧美人与z0zoxxxx视频| 中国美女乱淫免费看视频| 久久国产成人精品| 国产福利精品视频| 日韩中文字幕观看| 一区二区三区美女| 中文 日韩 欧美| 久久国产成人精品| 国产精品美女www爽爽爽视频| 四虎在线视频免费观看| 一区二区三区免费观看| 日本高清一区二区视频| 色婷婷热久久| 国产精品中文字幕久久久| 国内在线精品| 91国偷自产一区二区使用方法| 久久久久麻豆v国产精华液好用吗| 中国精品18videos性欧美| 国产精品三级美女白浆呻吟 | 亚洲人成电影网站色| 亚洲精品午夜国产va久久成人| 粉嫩绯色av一区二区在线观看| 热这里只有精品| 日韩专区视频| 久久精品国产视频| 国产精品久久久久久久久久久久久久久久久久 | 99久久婷婷国产综合精品电影√| 国产激情久久久| 超碰免费在线| 欧美日韩中文字幕一区| 国产aaaaaaaaa| 久久se精品一区精品二区| 一区二区成人国产精品| 99re8精品视频在线观看| 社区色欧美激情 | 一二三区在线播放| 亚洲三级小视频| av在线免费观看不卡| 韩日成人在线| 好吊色欧美一区二区三区四区| 国产网站在线| 亚洲欧美成人网| 亚洲 小说区 图片区| 国产精品国产三级国产三级人妇 | 成人午夜激情在线| 成年人看的毛片| 亚洲欧洲av| 国产精品亚洲片夜色在线| 免费的黄网站在线观看| 日韩久久免费av| 日韩成人免费观看| 久久久久久9999| www.se五月| 合欧美一区二区三区| 精品日本一区二区| 久久亚洲精品爱爱| 欧美成人免费一级人片100| 好吊色一区二区| 91久久精品一区二区| 91香蕉视频在线播放| 成人免费看黄yyy456| 成人在线观看a| 欧美91视频| 欧美日本国产精品| 国产精品白丝久久av网站| 韩国视频理论视频久久| 成a人片在线观看www视频| 日韩女同互慰一区二区| 亚洲 欧美 日韩 在线| 国产精品电影院| 亚洲一区二区三区综合| 麻豆国产精品一区二区三区 | 日韩黄色免费网站| 国产免费xxx| 在线观看欧美理论a影院| 91九色视频在线| 欧美大片免费| 久久99视频免费| 国产在线观看免费网站| 欧美电影免费观看完整版 | 欧美一级理论片| 亚洲av中文无码乱人伦在线视色| 成人免费视频在线观看| 在线免费观看日韩av| 国产不卡视频一区| 一道本视频在线观看| 国产亚洲福利| 日韩精品第1页| 欧美亚洲在线日韩| 精品日产一区2区三区黄免费| 亚洲成人毛片| 国产www精品| 黄色漫画在线免费看| 美女精品久久久| av午夜在线| 国产视频久久久| 人妻一区二区三区| 日韩一区二区三区精品视频| 国产日韩在线免费观看| 精品国产精品自拍| 九九热国产精品视频| 亚洲欧洲三级电影| 91成人精品一区二区| 91在线小视频| 少妇一级淫片免费放播放| 国产一区二区h| 天天操狠狠操夜夜操| 蜜桃视频在线观看一区| 免费在线观看的毛片| 亚洲一区不卡| 亚洲欧洲日产国码无码久久99| 亚洲视频综合| 欧美中文字幕在线观看视频| 91精品精品| 一区二区高清视频| 五月精品视频| 在线视频不卡一区二区| 日韩欧美综合| 亚洲国产精品www| 欧美亚洲激情| 一本久道久久综合狠狠爱亚洲精品| 国产精品自拍区| 欧美精品在线一区| 精品国产一区二区三区四区| 欧美裸体网站| 成人影院在线| 亚洲一区二区三区精品动漫| 久久蜜桃av| 亚洲最新免费视频| 久久精品一区二区不卡| 久久最新免费视频| 欧美日韩亚洲一区二区三区在线| 欧美日韩亚洲国产成人| 欧美片第1页综合| 成人小视频在线观看免费| 尹人成人综合网| 男人日女人逼逼| 久久精品五月| 超碰在线人人爱| 精品午夜一区二区三区在线观看| 岛国av免费在线| 国产精品一区二区男女羞羞无遮挡 | www.99re6| 亚洲精品中文字幕乱码三区| 精品肉丝脚一区二区三区| 天天av天天翘天天综合网色鬼国产| 久久久久久久黄色片| 欧美在线不卡一区| 国产一区二区女内射| 日韩欧美中文一区二区| 香蕉av一区二区三区| 揄拍成人国产精品视频| av网站大全在线| 51精品国产黑色丝袜高跟鞋| 老司机成人影院| 91欧美精品成人综合在线观看| 51亚洲精品| 日韩av一区二区三区美女毛片| 日韩在线观看电影完整版高清免费悬疑悬疑| 亚洲第一精品区| 日韩午夜黄色| 一女二男3p波多野结衣| 国产成人精品一区二| 久久精品老司机| 亚洲人成网站影音先锋播放| 偷偷操不一样的久久| 欧美日韩免费视频| 色欲av伊人久久大香线蕉影院| 国产一区二区久久精品| 日本在线视频网址| 国产精品激情av电影在线观看| 亚洲开心激情| 亚洲欧美国产不卡| 99国产精品| 91香蕉国产线在线观看| 久久亚洲综合色| 高h视频免费观看| 日本电影亚洲天堂一区| www.看毛片| 成人国产精品一区二区免费麻豆| 欧美精品一区二区久久久| 香蕉视频911| 日韩电影在线观看永久视频免费网站| 日本韩国在线视频爽| 26uuu久久噜噜噜噜| 国产人与zoxxxx另类91| 欧美日韩一区二区三区在线视频 | 成人午夜私人影院| 成年人网站在线观看视频| 欧美日韩国产在线看| 成 人 免费 黄 色| 精品国产一区二区三区久久狼5月| 性欧美freesex顶级少妇| 成人av影视在线| 久久高清免费| 九九热在线免费| 久久综合久久久久88| 国产精品成人网站| 欧美一二三四区在线| 免费在线午夜视频| 日韩免费高清在线观看| 久久精品国产亚洲5555| 欧美日韩视频免费| 狠狠色综合播放一区二区| 99精品欧美一区二区| 富二代精品短视频| 老司机午夜福利视频| 久久99精品久久久久久琪琪 | 欧美裸体一区二区三区| 国产九色在线| 国产成人精品电影久久久| 欧美自拍视频| 久久视频这里有精品| 国产a级毛片一区| 久草网站在线观看| 91精品国产综合久久婷婷香蕉 | 亚洲国产合集| 亚洲熟妇无码另类久久久| 成人网男人的天堂| 国产主播在线播放| 亚洲第一网站免费视频| 182在线播放| 国产日韩亚洲精品| 99riav国产精品| 中文字幕人妻一区二区| 精品久久久久久久久久ntr影视| 欧美特级特黄aaaaaa在线看| 久久全国免费视频| 欧美成人午夜77777| 黄色免费视频大全| 久久久久国产精品人| 亚洲精品91天天久久人人| 深夜福利日韩在线看| 婷婷久久综合九色综合99蜜桃| 一区不卡字幕| 国产精品一区专区| 国产稀缺真实呦乱在线| 日韩高清中文字幕| 电影一区电影二区| 中国成人在线视频| 国产精品一色哟哟哟| 91在线看视频| 一区二区在线视频播放| 视频欧美精品| 日本久久久网站| 91麻豆国产精品久久| 亚洲永久精品一区| 久久视频这里只有精品| 国产suv精品一区| aaa毛片在线观看| 1024亚洲合集| 欧美性猛交 xxxx| 国产精品第一区| 亚洲国产精品成人| 欧美 变态 另类 人妖| 欧美日韩一区二区在线观看 | 亚洲视频在线一区观看| 国产成人无码www免费视频播放| 欧美亚洲日本网站| 日韩欧美字幕| 亚洲一区二区三区四区av| 色域天天综合网| 超碰在线最新| 免费在线成人av| 国产一区91精品张津瑜| 欧美特黄aaaaaa| 精品国产拍在线观看| 女同另类激情重口| 伊人色在线观看| 欧美天堂在线观看| 国产黄网站在线观看| 欧美精品v日韩精品v国产精品| 激情六月婷婷久久| 青青青国产在线| 欧美日本国产在线|