• 浏览器调用摄像头


    <!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>
     
  • 相关阅读:
    div+css清除浮动代码
    JavaScript for循环实现表格隔行变色
    JavaScript 四种显示数据方式
    table表格隔行变色
    table表格用tbody新属性获取DOM元素
    条形图
    子图--面向对象
    线的形状
    matplotlib--直线和点
    颜色和样式字符串
  • 原文地址:https://www.cnblogs.com/tian-sun/p/7404351.html
Copyright © 2020-2023  润新知