摘要:二瀏覽器如何調(diào)用本地?cái)z像頭下如何調(diào)用攝像頭由于不支持方法,所以調(diào)用攝像頭的方法在不支持,但是天無絕人之路,恰好可以解決這個(gè)問題,原理我也不是很清楚,在這里我只把源碼分享給大家。
一、非IE瀏覽器如何調(diào)用本地?cái)z像頭
1.非IE下的USB攝像頭
非IE下調(diào)用USB攝像頭,目前主要使用HTML5的getUserMedia(),使用之前先判斷瀏覽器是否支持該方法,注:使用getUSerMedia()調(diào)用USB攝像頭必須有后臺(tái)的支持,我用的是nodejs,源碼見文章底部
navigator.myGetUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia; if(navigator.myGetUserMedia){ //后續(xù)處理 ... }
2.getUserMedia()方法傳參
getUserMedia(constraints,successcallback,errorcallback); 參數(shù)說明 a:constraints是一個(gè)對(duì)象{"video":true,"audio":false}表示是否調(diào)用攝像頭和麥克風(fēng) b:successcall 成功之后的回掉函數(shù),瀏覽器會(huì)傳遞一個(gè)stream對(duì)象給函數(shù),可以通過這個(gè)對(duì)象進(jìn)行后續(xù)操作,此對(duì)象是一個(gè)blob對(duì)象,需要通過URL.createObjectURL()方法將其轉(zhuǎn)換 c:errorback 失敗之后的回掉函數(shù),瀏覽器會(huì)傳遞一個(gè)error對(duì)象
3.具體實(shí)現(xiàn)代碼
HTML部分: JavaScript部分: document.createElement("canvas").getContext("2d"); navigator.myGetUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia; var video = document.getElementById("video"), videoObj = {"video":true}, errorcallback = function(){ console.log("error"); } if(navigator.myGetUserMedia){ navigator.myGetUserMedia(videoObj,function(stream){ //stream是獲得的URL blob,通過URL.createObjectURL()靜態(tài)方法會(huì)創(chuàng)建一個(gè) DOMString,其中的URL對(duì)象表示指定的File對(duì)象或Blob對(duì)象。 video.src = window.URL.createObjectURL(stream); video.play(); },errorcallback) }二、IE瀏覽器如何調(diào)用本地?cái)z像頭
1.IE下如何調(diào)用USB攝像頭
由于IE不支持getUserMedia()方法,所以H5調(diào)用攝像頭的方法在IE不支持,但是天無絕人之路,flash恰好可以解決這個(gè)問題,原理我也不是很清楚,在這里我只把源碼分享給大家。整體源碼地址見文章底部
HTML部分:三、拍照轉(zhuǎn)換為base64JavaScript部分: //獲取Flash對(duì)象 function thisMovie(movieName) { if (navigator.appName.indexOf("Microsoft") != -1){ return document[movieName]; } else { return document[movieName]; } } thisMovie("My_Cam");
1.非IE下將拍攝的圖片轉(zhuǎn)換為base64
可以使用H5的canvas在視頻流中的截取一張圖片,之后通過自帶的toDataURL()將其轉(zhuǎn)換為base64
HTML部分 : JavaScript部分 : var video = document.getElementById("video"); var canvas = document.getElementById("canvas"); var context = canvas.getContext("2d"); document.getElementById("btn").onclick=function(){ context.drawImage(video,0,0,680,480); //轉(zhuǎn)換為base64字符串 var base64 = canvas.toDataURL("image/png"); console.log(base64); }
2.IE下轉(zhuǎn)為base64,直接調(diào)用內(nèi)部的GetBase64Code()方法
var MyCan= thisMovie("My_Cam"); setTimeout(function(){ var base64Data = MyCan.GetBase64Code(); console.log(base64Data); },2000)四、資源鏈接
1.本次分享主要是為了解決瀏覽器內(nèi)打開USB攝像頭問題,如果有小伙伴對(duì)canvas不太了解的話,可以看canvas基礎(chǔ)教程,整體源碼地址源碼鏈接
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/90174.html
摘要:通過可以將和連接起來,當(dāng)和連接后,獲得的預(yù)覽幀數(shù)據(jù)就可以通過顯示在屏幕上了。預(yù)覽幀數(shù)據(jù)傳遞給,實(shí)現(xiàn)預(yù)覽圖像的顯示。這里預(yù)覽幀數(shù)據(jù)對(duì)應(yīng)的預(yù)覽圖像暫且稱作相機(jī)預(yù)覽圖像。拍攝幀數(shù)據(jù)可以生成位圖文件,最終保存成或者等格式的圖片。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由QQ空間開發(fā)團(tuán)隊(duì)發(fā)表于云+社區(qū)專欄 最近我負(fù)責(zé)開發(fā)了一個(gè)跟Android相機(jī)有關(guān)的需求,新功能允許...
摘要:二編輯合成照片使用編輯壓縮重設(shè)尺寸比例轉(zhuǎn)成輸出預(yù)覽。三保存并上傳照片提交數(shù)據(jù)到服務(wù)器需要服務(wù)器支持我跳過了。數(shù)據(jù)主要來自拍攝的照片,多用于移動(dòng)端開發(fā),端也會(huì)用到,此插件兼容主流瀏覽器,以下不支持。 系列文章 關(guān)于前端上傳文件全面基礎(chǔ)掃盲貼(零)關(guān)于前端上傳文件全面基礎(chǔ)掃盲貼(一) ----- XMLHttpRequest關(guān)于前端上傳文件全面基礎(chǔ)掃盲貼(二) ----- File關(guān)于前端...
閱讀 2376·2021-09-22 15:15
閱讀 640·2021-09-02 15:11
閱讀 1784·2021-08-30 09:48
閱讀 1884·2019-08-30 15:56
閱讀 1480·2019-08-30 15:52
閱讀 2042·2019-08-30 15:44
閱讀 431·2019-08-29 16:29
閱讀 1538·2019-08-29 11:06