js调用网络摄像头
2019-08-14 09:55:24来源:博客园 阅读 ()
不支持IE浏览器(需要使用flash插件), 支持移动端, 未经过完全测试
PC端使用的时候, HTML页面需要预留video标签, canvas标签
移动端使用的时候, HTML页面需要预留file标签, canvas标签, img标签
(function (window, document) { window.camera = { init: function (options) { /** * options 属性示例 * videoID: video控件ID * canvasID: canvas控件ID * fileID: type为file的input控件的ID * imageID: img控件的ID * videoEnable: 是否启用摄像头 * audioEnable: 是否启用麦克风 * videoWidth: 视频宽度 * videoHeight: 视频高度 * photoWidth: 拍照宽度 * photoHeight: 拍照高度 */ _options = options; if (isMobileTerminal()) { initMobileTerminal(); } else { initComputerTerminal(); } }, photo: function () { if (isMobileTerminal()) { photoMobileTerminal(); } else { photoComputerTerminal(); } } }; let _options = null; function initComputerTerminal() { let videoDom = document.getElementById(_options.videoID); if (!videoDom) { alert('Video 控件无效'); return; } let canvasDom = document.getElementById(_options.canvasID); if (!canvasDom) { alert('Canvas 控件无效'); return; } canvasDom.setAttribute('width', _options.photoWidth + 'px'); canvasDom.setAttribute('height', _options.photoHeight + 'px'); let parameters = { video: _options.videoEnable ? { width: _options.videoWidth, height: _options.videoHeight } : false, audio: _options.audioEnable }; navigator.mediaDevices.getUserMedia(parameters) .then(function (MediaStream) { video.srcObject = MediaStream; video.play(); }).catch(function (reason) { console.log(reason); alert(reason); }); } function photoComputerTerminal() { let videoDom = document.getElementById(_options.videoID); if (!videoDom) { alert('Video 控件无效'); return; } let canvasDom = document.getElementById(_options.canvasID); if (!canvasDom) { alert('Canvas 控件无效'); return; } let context = canvasDom.getContext('2d'); context.drawImage(videoDom, 0, 0, _options.photoWidth, _options.photoHeight); } function initMobileTerminal() { let fileDom = document.getElementById(_options.fileID); if (!fileDom) { alert('File 控件无效'); return; } fileDom.setAttribute('accept', 'image/*'); fileDom.setAttribute('capture', 'camera'); let canvasDom = document.getElementById(_options.canvasID); if (!canvasDom) { alert('Canvas 控件无效'); return; } canvasDom.setAttribute('width', _options.photoWidth + 'px'); canvasDom.setAttribute('height', _options.photoHeight + 'px'); let imageDom = document.getElementById(_options.imageID); if (!imageDom) { alert('Image 控件无效'); return; } fileDom.addEventListener('change', function () { let file = fileDom.files[0]; let reader = new FileReader(); reader.onloadend = function () { imageDom.setAttribute('src', reader.result); setTimeout(function () { let context = canvas.getContext("2d"); context.drawImage(imageDom, 0, 0, _options.photoWidth, _options.photoHeight); }, 300); }; reader.readAsDataURL(file); }); } function photoMobileTerminal() { let fileDom = document.getElementById(_options.fileID); fileDom.click(); } function isMobileTerminal() { if (/AppleWebKit.*Mobile/i.test(navigator.userAgent) || /Mobile/.test(navigator.userAgent) || /MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent)) return /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent); return false; } })(window, document);
原文链接:https://www.cnblogs.com/JosephBee/p/11090962.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:js获取客户端IP
下一篇:网页百度地图api,支持位置偏移
- 基于JQuery的多标签实现代码 2020-03-29
- 根据分辨率调用css文件的方法 2020-03-19
- 使用JS在浏览器中判断当前网络连接状态的几种方法 2020-03-12
- js调用刷新界面的几种方式 2020-03-05
- JavaScript 异步调用 2020-02-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash