js如何调用电脑的摄像头
程序员文章站
2022-12-01 19:50:35
闲来无事,用js写了一个调用摄像头的demo,并用canvas显示保存。这个功能很实用,比如上传用户的头像,即时拍照及时上传。 Html: JavaScript: 总结:上面这个Demo主要用到浏览器的摄像头组件,然后再将图片源赋给canvas。其中遇到一个坑:代码需要托管到服务器端,即在客户端访问 ......
闲来无事,用js写了一个调用摄像头的demo,并用canvas显示保存。这个功能很实用,比如上传用户的头像,即时拍照及时上传。
Html:
<video width="200px" height="150px"></video> <canvas width="200px" height="150px"></canvas> <p> <button id="start">打开摄像头</button> <button id="snap">截取图像</button> <button id="close">关闭摄像头</button> </p>
JavaScript:
window.onload = function () { var canvas = document.getElementsByTagName('canvas')[0], context = canvas.getContext('2d'), video = document.getElementsByTagName("video")[0], snap = document.getElementById("snap"), close = document.getElementById("close"), start = document.getElementById("start"), MediaStreamTrack; start.addEventListener('click', function () { if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then(function (stream) { console.log(stream); MediaStreamTrack=typeof stream.stop==='function'?stream:stream.getTracks()[1]; video.src=(window.URL).createObjectURL(stream); video.play(); }).catch(function(err){ console.log(err); }); }else if(navigator.getMedia){ navigator.getMedia({ video: true }).then(function (stream) { console.log(stream); MediaStreamTrack=stream.getTracks()[1]; video.src=(window.webkitURL).createObjectURL(stream); video.play(); }).catch(function(err){ console.log(err); }); } }); snap.addEventListener('click', function () { context.drawImage(video, 0, 0,200,150); }); close.addEventListener('click', function () { MediaStreamTrack && MediaStreamTrack.stop(); }); }
总结:上面这个Demo主要用到浏览器的摄像头组件,然后再将图片源赋给canvas。其中遇到一个坑:代码需要托管到服务器端,即在客户端访问才能调用浏览器成功。这种禁止本地调用的做法可能是出于浏览器的安全性和用户的隐私考虑。
推荐阅读
-
如何提升vue.js中大型数据的性能
-
教你如何编写Vue.js的单元测试的方法
-
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
-
如何禁用Win 10系统摄像头?禁用摄像头的方法
-
js调用设备摄像头的方法
-
node.js调用Chrome浏览器打开链接地址的方法
-
如何将普通PC电脑变成“家庭娱乐共享中心”的详细教程
-
Mybaits 源码解析 (六)----- 全网最详细:Select 语句的执行过程分析(上篇)(Mapper方法是如何调用到XML中的SQL的?)
-
51模拟器内的文件如何导出到电脑?51模拟器导入导出文件的方法介绍
-
js调用iframe实现打印页面内容的方法