javascript實(shí)現(xiàn)拍照功能詳細(xì)示例代碼
介紹
HTML5 的 getUserMedia API 為用戶(hù)提供訪問(wèn)硬件設(shè)備媒體(攝像頭、視頻、音頻、地理位置等)的接口,基于該接口,開(kāi)發(fā)者可以在不依賴(lài)任何瀏覽器插件的條件下訪問(wèn)硬件媒體設(shè)備。
另外,主流瀏覽器 Firefox、Chrome、Safari、Opera 等等已經(jīng)全面支持。
一、獲取視頻流,并用 video 標(biāo)簽播放
<video id="video" autoplay></video>
const videoConstraints = { width: 1366, height: 768 };
const videoNode = document.querySelector('#video');
let stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: videoConstraints });
videoNode.srcObject = stream;
videoNode.play();二、多個(gè)攝像頭設(shè)備切換
// enumerateDevices獲取所有媒體設(shè)備
const mediaDevices = await navigator.mediaDevices.enumerateDevices();
// 通過(guò)設(shè)備實(shí)例king屬性videoinput,過(guò)濾獲取攝像頭設(shè)備
const videoDevices = mediaDevices.filter(item => item.kind === 'videoinput') || [];
// 獲取前置攝像頭
const videoDeviceId = videoDevices[0].deviceId;
const videoConstraints = { deviceId: { exact: videoDeviceId }, width: 1366, height: 768 };
let stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: videoConstraints });
// 獲取后置攝像頭
const videoDeviceId = videoDevices[1].deviceId;
const videoConstraints = { deviceId: { exact: videoDeviceId }, width: 1366, height: 768 };
let stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: videoConstraints });
// 依次類(lèi)推...
三、拍照保存圖片
// 通過(guò)canvas捕捉video流,生成base64格式圖片
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
canvas.width = 1366;
canvas.height = 768;
context.drawImage(videoNode, 0, 0, canvas.width, canvas.height);
download(canvas.toDataURL('image/jpeg'));
// 下載圖片
function download (src) {
if (!src) return;
const a = document.createElement('a');
a.setAttribute('download', new Date());
a.href = src;
a.click();
}
關(guān)閉攝像頭設(shè)備
let stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: videoConstraints });
// 3s后關(guān)閉攝像頭
setTimeout(function () {
stream.getTracks().forEach(track => track.stop());
stream = null;
}, 3000);總結(jié)
到此這篇關(guān)于javascript實(shí)現(xiàn)拍照功能的文章就介紹到這了,更多相關(guān)javascript拍照功能實(shí)現(xiàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js實(shí)現(xiàn)公告自動(dòng)滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)公告自動(dòng)滾動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
JavaScript實(shí)現(xiàn)的瀏覽器下載文件的方法
本文通過(guò)一段簡(jiǎn)單的代碼給大家介紹了js實(shí)現(xiàn)瀏覽器下載文件的方法,需要的的朋友參考下吧2017-08-08
jqplot通過(guò)ajax動(dòng)態(tài)畫(huà)折線圖的方法及思路
這篇文章主要介紹了2013-12-12
JavaScript通過(guò)filereader接口讀取文件
這篇文章主要為大家詳細(xì)介紹了通過(guò)filereader接口讀取文件,使用readAsDataURL方法預(yù)覽圖片的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05

