javascript实现拍照功能详细示例代码
更新时间:2023年07月27日 11:12:03 作者:街尾杂货店&
这篇文章主要给大家介绍了关于javascript实现拍照功能的相关资料, 最近做项目,遇到一个正常但又少见的需求之拍照,文中给出了详细的代码示例,需要的朋友可以参考下
介绍
HTML5 的 getUserMedia API 为用户提供访问硬件设备媒体(摄像头、视频、音频、地理位置等)的接口,基于该接口,开发者可以在不依赖任何浏览器插件的条件下访问硬件媒体设备。
另外,主流浏览器 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拍照功能实现内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
相关文章
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
这篇文章主要介绍了Chart.js 轻量级HTML5图表绘制工具库,Chart.js基于HTML5 canvas技术支持所有现代浏览器,并且针对IE7/8提供了降级替代方案,感兴趣的小伙伴们可以参考一下2018-05-05JavaScript之promise_动力节点Java学院整理
这篇文章主要为大家详细介绍了JavaScript之promise的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-07-07Javascript中类式继承和原型式继承的实现方法和区别之处
其它的面向对象程序设计语言都是通过关键字来解决继承的问题。但是javascript中并没有定义这种实现的机制。接下来通过本文给大家介绍Javascript中类式继承和原型式继承的实现方法和区别,需要的朋友可以参考下2017-04-04
最新评论