日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端调用手机摄像头权限进行扫码解析

發(fā)布時(shí)間:2023/12/14 HTML 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端调用手机摄像头权限进行扫码解析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前端調(diào)用手機(jī)攝像頭權(quán)限進(jìn)行掃碼解析(demo含Vue及原生)

  • 前端調(diào)用手機(jī)攝像頭權(quán)限進(jìn)行掃碼解析(demo含Vue及原生js寫法)
    • 引子
    • 實(shí)踐
    • 此時(shí)已經(jīng)可以成功調(diào)用攝像頭,接下來集成進(jìn)Vue工程中
      • 最后

前端調(diào)用手機(jī)攝像頭權(quán)限進(jìn)行掃碼解析(demo含Vue及原生js寫法)

項(xiàng)目必須基于HTTPS協(xié)議!!!

引子

本人馬上畢業(yè)了,現(xiàn)在在新單位實(shí)習(xí)前端,有個(gè)需求需要在移動(dòng)Web端調(diào)用攝像頭進(jìn)行掃碼,這方面之前沒有接觸過,但時(shí)間有限,只能走一步看一步,首先收集資料:

  • 調(diào)用設(shè)備掃碼功能在安卓app上有api可以調(diào)用,Hbulider 5+app中也有現(xiàn)成的api,但我這個(gè)項(xiàng)目已經(jīng)開發(fā)了很久了,只能新加模塊,顯然不符合上面的情況。
  • 原生Web有個(gè)api叫 Navigator.mediaDevices。
    mediaDevices 是 Navigator 只讀屬性,返回一個(gè) MediaDevices 對象,該對象可提供對相機(jī)和麥克風(fēng)等媒體輸入設(shè)備的連接訪問,也包括屏幕共享。
  • 掃碼解析則可以使用 qrcode.js 這一個(gè)js庫。
  • 實(shí)踐

    // 調(diào)用攝像頭方法,原生Navigator.mediaDevices api function setwebcam(){ var options = true; if(navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {try{navigator.mediaDevices.enumerateDevices().then(function(devices) {devices.forEach(function(device) {if (device.kind === 'videoinput') {options={'deviceId': {'exact':device.deviceId}, 'facingMode':'environment'} ;console.log(device);}console.log(device.kind + ": " + device.label +" id = " + device.deviceId);});console.log(options)setwebcam2(options);});}catch(e){console.log(e);} } else{console.log("無設(shè)備信息。" ); } }

    其中 ‘facingMode’:‘environment’ 則可以穩(wěn)定調(diào)用后置攝像頭,不會(huì)再出現(xiàn)網(wǎng)上大家所說的調(diào)用前置的情況。
    此時(shí)需要與前端元素配合

    // html 樣式自調(diào) <div class="container"><div id="scan"><video id="vcode" autoplay></video><canvas id="code-canvas"></canvas></div></div> start() // function function start(){createCanvas(800,600);setwebcam(); } // 此處借鑒了導(dǎo)師給的方法,構(gòu)建canvas function createCanvas(w,h){n = navigator;v = document.getElementById("vcode");var gCanvas = document.getElementById("code-canvas");gCanvas.style.width = w + "px";gCanvas.style.height = h + "px";gCanvas.width = w;gCanvas.height = h;gCtx = gCanvas.getContext("2d");gCtx.clearRect(0, 0, w, h);console.log("canvas complete!"); } function setwebcamres(options){var setvideo = n.mediaDevices.getUserMedia({video: options, audio: false});setvideo.then(success, error);}

    此時(shí)已經(jīng)可以成功調(diào)用攝像頭,接下來集成進(jìn)Vue工程中

    安裝zxing.js依賴

    npm i @zxing/library --save
    npm install --save webrtc-adapter

    <template><div class="container"><videoid="video"ref="video"width="421"height="400"class="video-container"></video><div>{{ textContent }}</div></div> </template><script>import adapter from 'webrtc-adapter';// WebRTC適配器 只需要引入import { BrowserMultiFormatReader } from '@zxing/library';export default {data() {return {codeReader: new BrowserMultiFormatReader(),textContent: undefined,};},async created() {this.codeReader.getVideoInputDevices().then((videoInputDevices) => {const selectedDeviceId = videoInputDevices[1].deviceId; //第二個(gè)攝像頭this.codeReader.decodeFromInputVideoDeviceContinuously(selectedDeviceId, 'video', (result, err) => {if (result) {console.log(result);this.textContent = result.text;this.scanRoomResult(this.textContent);}if (err && !(err)) {console.error(err);}});console.log(`Started continous decode from camera with id ${selectedDeviceId}`);}).catch((err) => {console.error(err);});},methods: {scanRoomResult(roomName) {this.scanRoomInfo = roomName;this.scanRoomInfo = JSON.parse(this.scanRoomInfo);// 將字符串轉(zhuǎn)換成json對象if (!this.scanRoomInfo.locationId) {this.textContent = 'QrCode Error!';} else {this.textContent = this.scanRoomInfo.locationId;const selector = this.$refs['inspectionRuleSelector'];selector && (selector.showRulePicker = true);}}}}; </script><style scoped lang="less"> .container{position: relative; }.video-container{margin-top: 5vh;} </style>

    最后

    以上,在Vue中使用zxing有一點(diǎn)不好就是攝像頭可控性不強(qiáng),他的源碼構(gòu)造函數(shù)中沒有把facingMode放出來,這也就不太好控制攝像頭順序,因?yàn)槊總€(gè)手機(jī)攝像頭順序都不一定是相同的。

    總結(jié)

    以上是生活随笔為你收集整理的前端调用手机摄像头权限进行扫码解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲综合福利 | 成人网一区| 欧美日韩国产一区二区三区在线观看 | 久久免费的精品国产v∧ | 国产91色 | 91爱啪啪 | 国产午夜激情 | 超碰www| 精品国产一区二区三区无码 | 电影《两个尼姑》免费播放 | 黑名单上的人全集免费观看 | 黑人与亚洲人色ⅹvideos | 日韩和欧美的一区二区 | 国产高清视频一区 | 天堂在线视频网站 | 久热综合 | 欧美特黄 | 久久黄色网络 | 日本在线有码 | 直接看的av| 操天天操 | 人妻中文字幕一区 | 浪漫樱花在线观看高清动漫 | 六月婷婷色 | 生活片毛片 | 懂色av一区二区三区 | 亚洲成人精品一区 | 国产黄色在线看 | 91丝袜美女| 黄色日韩 | 91美女高潮出水 | 日韩欧美精品在线观看 | 在线理论视频 | 误杀1电影免费观看高清完整版 | 乱子伦一区二区三区 | 亚洲色图综合在线 | 大色综合| www.午夜视频 | 欧美久久免费 | 毛片3 | 91视频.com| 污视频网站免费在线观看 | 爱情岛亚洲首页论坛 | 爱情岛论坛亚洲品质自拍视频 | 欧美婷婷 | 中文字字幕码一二三区 | 亚洲影院在线 | 天天做天天爽 | 久久久久久久9999 | www.一区二区三区四区 | 激情欧美一区 | 强开小嫩苞一区二区三区网站 | 亚洲黑丝在线 | 午夜一区二区三区免费 | 一本色道无码道dvd在线观看 | 久草视频在线看 | 亚洲综合国产精品 | 久久久久久久香蕉 | 精品无码人妻少妇久久久久久 | www.综合色| 友田真希一区二区 | 亚洲女人18毛片水真多 | 91久久国产综合久久91精品网站 | 国产91香蕉 | 久久久国 | 欧美亚洲综合另类 | 大肉大捧一进一出好爽视频动漫 | 成人性做爰aaa片免费 | 中文字幕理论片 | 国产婷婷色一区二区 | 亚洲自拍偷拍色图 | 多男调教一女折磨高潮高h 国内毛片毛片毛片毛片毛片 | 综合精品久久久 | 国产伦精品一区二区三区视频黑人 | 色呦呦视频在线观看 | 特级西西444www高清大胆免费看 | 日韩黄色视屏 | 亚洲视频一二三四 | 巨乳免费观看 | 人妖被c到高潮欧美gay | 精品久久网站 | 男人的天堂97 | 色婷婷导航 | 一本一道人人妻人人妻αv 九一在线视频 | 91免费国产在线观看 | 国产一级在线 | 欧美91| 午夜黄色av | 李宗瑞91在线正在播放 | 国产黑人 | 性久久久久久久久 | 国产91九色 | 在线观看香蕉视频 | 国产成人一区二区三区影院在线 | 国产精品无码久久久久高潮 | 影音先锋蜜桃 | 在线国产视频一区 | 日韩av免费一区 | 国产日产精品一区二区三区四区 |