• 首页
  • 电影
  • Js
  • 前端
  • 新旅
  • 奇技
  • 网安
  • 歌单
  • 关于
  • 搜索
  • 夜间模式
    ©2013-2025  成长小破站 Theme by OneBlog
    搜索
    标签
    # css # js # uniapp # ps # chrome # 小程序 # javascript # 布局 # typecho # 激活码
  • 首页>
  • Javascript>
  • 正文
  • web H5摄像头-Media-Recorder-API-Demo

    2019年08月26日 1.6 k 阅读 0 评论 3774 字


    media-recorder-api

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>拍照2</title>
    </head>
     
    <body>
        <div  style="display: block">
        <button id="take" >拍照</button>
        <button onclick="upload()" >保存照片</button>
        <button onclick="closeapp()" >退出</button>
       </div>
       <div class="voidetop" style="position: relative;display: block">
    <video id="v" width="350"  style="height: 100%; padding: 0;margin:50px 0;border:10px solid #f00;background: #022"  ></video>
        <canvas id="canvas" style="display:none;"></canvas>
       </div>
        <br />
        <div class="voideimg" style="position: absolute; left: 480px; top: 100px; width: 370px; height: 370px;" >    
        <img height="350" width="350" src="http://placehold.it/640&text=Your%20image%20here%20..." id="photo" alt="photo">
        </div>
        <script>
            !(function () {
                // 老的浏览器可能根本没有实现 mediaDevices,所以我们可以先设置一个空的对象
                if (navigator.mediaDevices === undefined) {
                    navigator.mediaDevices = {};
                }
                if (navigator.mediaDevices.getUserMedia === undefined) {
                    navigator.mediaDevices.getUserMedia = function (constraints) {
                        // 首先,如果有getUserMedia的话,就获得它
                        var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
     
                        // 一些浏览器根本没实现它 - 那么就返回一个error到promise的reject来保持一个统一的接口
                        if (!getUserMedia) {
                            return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
                        }
     
                        // 否则,为老的navigator.getUserMedia方法包裹一个Promise
                        return new Promise(function (resolve, reject) {
                            getUserMedia.call(navigator, constraints, resolve, reject);
                        });
                    }
                }
                const constraints = {
                    video: true,
                    audio: false
                };
                let videoPlaying = false;
                let v = document.getElementById('v');
                let promise = navigator.mediaDevices.getUserMedia(constraints);
                promise.then(stream => {
                    // 旧的浏览器可能没有srcObject
                    if ("srcObject" in v) {
                        v.srcObject = stream;
                    } else {
                        // 防止再新的浏览器里使用它,应为它已经不再支持了
                        v.src = window.URL.createObjectURL(stream);
                    }
                    v.onloadedmetadata = function (e) {
                        v.play();
                        videoPlaying = true;
                    };
                }).catch(err => {
                    console.error(err.name + ": " + err.message);
                })
                document.getElementById('take').addEventListener('click', function () {
                    if (videoPlaying) {
                        let canvas = document.getElementById('canvas');
                        canvas.width = v.videoWidth;
                        canvas.height = v.videoHeight;
                        canvas.getContext('2d').drawImage(v, 0, 0);
                        let data = canvas.toDataURL('image/webp');
                        document.getElementById('photo').setAttribute('src', data);
                    }
                }, false); 
                
            })();
            function upload() {
                var d = document.getElementById("photo").toDataURL("image/jpeg");
                d = d.slice(d.indexOf(",") + 1);
                ajaxRequest(frmMain.hfrWebCamPic, "saveimg", ["img="+d]); 
                }
            function closeapp() {
        ajaxRequest(frmMain.hfrWebCamPic, "closeapp", []);
      }
        </script>
    </body>
    </html>
    本文著作权归作者 [ admin ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    html5摄像头html5拍照html5打开摄像头
    取消回复

    发表留言
    回复

    首页电影Js前端新旅奇技网安歌单关于
    Copyright©2013-2025  All Rights Reserved.  Load:0.033 s
    豫公网安备41050202000235   豫ICP备18019224号-2
    Theme by OneBlog V3.6.4
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。