博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浏览器调用摄像头
阅读量:7030 次
发布时间:2019-06-28

本文共 2083 字,大约阅读时间需要 6 分钟。

<!DOCTYPE html>
<html>
 
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<video width="200" height="150"></video>
<canvas width="200" height="150"></canvas>
<p>
<button id="snap">截取图像</button>
<button id="close">关闭摄像头</button>
<button id="upload">上传图像</button>
</p>
<img id="uploaded" width="200" height="150" />
<script type="text/javascript" src="js/jquery.min.js"></script>
     <script type="text/javascript">
     function $(elem) {
         return document.querySelector(elem);
    }
    // 获取媒体方法(旧方法)
// 8     navigator.getMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMeddia || navigator.msGetUserMedia;
     var canvas = $('canvas'),
         context = canvas.getContext('2d'),
         video = $('video'),
         snap = $('#snap'),
         close = $('#close'),
         upload = $('#upload'),
         uploaded = $('#uploaded'),
         mediaStreamTrack;
    // 获取媒体方法(新方法)
     // 使用新方法打开摄像头
     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 || window.webkitURL).createObjectURL(stream);
            video.play();
        }).catch(function(err) {
            console.log(err);
        })
        }
     // 使用旧方法打开摄像头
     else if (navigator.getMedia) {
         navigator.getMedia({
             video: true
         }, function(stream) {
            mediaStreamTrack = stream.getTracks()[0];
  
            video.src = (window.URL || window.webkitURL).createObjectURL(stream);
            video.play();
         }, function(err) {
            console.log(err);
         });
     }
     // 截取图像
     snap.addEventListener('click', function() {
         context.drawImage(video, 0, 0, 200, 150);
    }, false);
     // 关闭摄像头
     close.addEventListener('click', function() {
        mediaStreamTrack && mediaStreamTrack.stop();
    }, false);
     // 上传截取的图像
     upload.addEventListener('click', function() {
         jQuery.post('/uploadSnap.php', {
             snapData: canvas.toDataURL('image/png')
         }).done(function(rs) {
             rs = JSON.parse(rs);
             console.log(rs);
             uploaded.src = rs.path;
         }).fail(function(err) {
             console.log(err);
         });
     }, false);
     </script>
</body>
 
</html>
 

转载于:https://www.cnblogs.com/tian-sun/p/7404351.html

你可能感兴趣的文章
python 的实用技巧
查看>>
创建RHCS集群环境
查看>>
电子商务未来的趋势,难道我真的错了?
查看>>
工厂方法模式
查看>>
360安全卫士怎么登录问题
查看>>
linux下的DNS缓存服务
查看>>
实现一键分享的代码
查看>>
详解Linux运维工程师必备技能
查看>>
[20181109]12c sqlplus rowprefetch参数5
查看>>
bupt summer training for 16 #1 ——简单题目
查看>>
【Udacity】朴素贝叶斯
查看>>
shader 讲解的第二天 把兰伯特模型改成半兰泊特模型 函数图形绘制工具
查看>>
python3.5安装Numpy、mayploylib、opencv等额外库
查看>>
优雅绝妙的Javascript跨域问题解决方案
查看>>
Java 接口技术 Interface
查看>>
函数草稿
查看>>
织梦系统学习:文章页当前位置的写法(自认对SEO有用)
查看>>
PHP经验——PHPDoc PHP注释的标准文档(翻译自Wiki)
查看>>
vue input输入框长度限制
查看>>
深入理解Java虚拟机(类加载机制)
查看>>