javascript實現拍照功能詳細示例代碼
更新時間:2023年07月27日 11:12:03 作者:街尾雜貨店&
這篇文章主要給大家介紹了關于javascript實現拍照功能的相關資料, 最近做項目,遇到一個正常但又少見的需求之拍照,文中給出了詳細的代碼示例,需要的朋友可以參考下
介紹
HTML5 的 getUserMedia API 為用戶提供訪問硬件設備媒體(攝像頭、視頻、音頻、地理位置等)的接口,基于該接口,開發(fā)者可以在不依賴任何瀏覽器插件的條件下訪問硬件媒體設備。
另外,主流瀏覽器 Firefox、Chrome、Safari、Opera 等等已經全面支持。
一、獲取視頻流,并用 video 標簽播放
<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();
二、多個攝像頭設備切換
// enumerateDevices獲取所有媒體設備 const mediaDevices = await navigator.mediaDevices.enumerateDevices(); // 通過設備實例king屬性videoinput,過濾獲取攝像頭設備 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 }); // 依次類推...
三、拍照保存圖片
// 通過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(); }
關閉攝像頭設備
let stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: videoConstraints }); // 3s后關閉攝像頭 setTimeout(function () { stream.getTracks().forEach(track => track.stop()); stream = null; }, 3000);
總結
到此這篇關于javascript實現拍照功能的文章就介紹到這了,更多相關javascript拍照功能實現內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章: