使用网络摄像头和jQuery和HTML存储捕获的图像?

时间:2017-11-03 12:02:08

标签: javascript html5-video

我正在使用html和java-script做一个项目,但我是java脚本的新手,但我对js功能有点了解...我的项目是基于网络摄像头和我的网络摄像头拍摄的图像我已经完成了网络摄像头和我从我的网络摄像头拍照和现在我的问题是我想用捕获的按钮保存我捕获的图像我试过但我不能得到确切的结果。如果有人知道请帮助我..

这是我的编码:'cam-video.html'

     <div class="container" id="videophoto">
        <div class="row">
            <div class="col-sm-6 col-md-6">
            <div id="container">
                <video id="videoel" width="400" height="300" preload="auto" loop playsinline autoplay>
                </video>
                <canvas id="overlay" width="400" height="300"></canvas>
            </div>
<button id="capture" class="pic">Capture</button><br />
                <!--<img src="examples/media/audrey.jpg" />-->
                <div class="alert alert-success" id="success-alert">
    <button type="button" class="close" data-dismiss="alert">x</button>
                    <img src="" id="photo" alt="photo">

这是我的javascript:'mine.js'

    <script>
                var vid = document.getElementById('videoel');
                var vid_width = vid.width;
                var vid_height = vid.height;
                var overlay = document.getElementById('overlay');
                var overlayCC = overlay.getContext('2d');

                /*********** Setup of video/webcam and checking for webGL support *********/

                function enablestart() {
                    var starttbutton = document.getElementById('starttbutton');
                    starttbutton.value = "start";
                    starttbutton.disabled = null;

                }

                var insertAltVideo = function(video) {
                    // insert alternate video if getUserMedia not available
                    if (supports_video()) {
                        if (supports_webm_video()) {
                            video.src = "./media/cap12_edit.webm";
                        } else if (supports_h264_baseline_video()) {
                            video.src = "./media/cap12_edit.mp4";
                        } else {
                            return false;
                        }
                        return true;
                    } else return false;
                }

                function adjustVideoProportions() {
                    // resize overlay and video if proportions of video are not 4:3
                    // keep same height, just change width
                    var proportion = vid.videoWidth/vid.videoHeight;
                    vid_width = Math.round(vid_height * proportion);
                    vid.width = vid_width;
                    overlay.width = vid_width;
                }

                function gumSuccess( stream ) {
                    // add camera stream if getUserMedia succeeded
                    if ("srcObject" in vid) {
                        vid.srcObject = stream;
                    } else {
                        vid.src = (window.URL && window.URL.createObjectURL(stream));
                    }
                    vid.onloadedmetadata = function() {
                        adjustVideoProportions();
                        vid.play();

                    }
                    vid.onresize = function() {
                        adjustVideoProportions();
                        if (trackingStarted) {
                            ctrack.stop();
                            ctrack.reset();
                            ctrack.start(vid);
                        }
                    }
                }

                function gumFail() {
                    // fall back to video if getUserMedia failed
                    insertAltVideo(vid);
                    document.getElementById('gum').className = "hide";
                    document.getElementById('nogum').className = "nohide";
                    alert("There was some problem trying to fetch video from your webcam, using a fallback video instead.");
                }

                navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
                window.URL = window.URL || window.webkitURL || window.msURL || window.mozURL;

                // set up video
                if (navigator.mediaDevices) {
                    navigator.mediaDevices.getUserMedia({video : true}).then(gumSuccess).catch(gumFail);
                } else if (navigator.getUserMedia) {
                    navigator.getUserMedia({video : true}, gumSuccess, gumFail);
                } else {
                    insertAltVideo(vid);
                    document.getElementById('gum').className = "hide";
                    document.getElementById('nogum').className = "nohide";
                    alert("Your browser does not seem to support getUserMedia, using a fallback video instead.");
                }

                vid.addEventListener('canplay', enablestart, false);

                /*********** Code for face tracking *********/

                var ctrack = new clm.tracker();
                ctrack.init();
                var trackingStarted = false;
                function startVideo() {
                    // start video
                    vid.play();
                    // start tracking
                    ctrack.start(vid);
//                  var time=setTimeout("alert('Two Faces Not Allowed')",3500);
                    trackingStarted = true;
                    // start loop to draw face
                    drawLoop();
                }

                function drawLoop() {
                    requestAnimFrame(drawLoop);
                    overlayCC.clearRect(0, 0, vid_width, vid_height);
                    //psrElement.innerHTML = "score :" + ctrack.getScore().toFixed(4);
                    if (ctrack.getCurrentPosition()) {
                        ctrack.draw(overlay);
                        document.getElementById('photo').setAttribute('src', data);
                    }
                }

                /*********** Code for stats **********/

                stats = new Stats();
                stats.domElement.style.position = 'absolute';
                stats.domElement.style.top = '0px';
                document.getElementById('container').appendChild( stats.domElement );

                // update stats on every iteration
                document.addEventListener('clmtrackrIteration', function(event) {
                    stats.update();
                }, false);

            </script>

<script type="text/javascript">
   (function() {

  var streaming = false,
    video = document.querySelector('#video'),
    canvas = document.querySelector('#canvas'),
    buttoncontent = document.querySelector('#buttoncontent'),
    photo = document.querySelector('#photo'),
    startbutton = document.querySelector('#startbutton'),
    width = 320,
    height = 0;

  navigator.getMedia = (navigator.getUserMedia ||
    navigator.webkitGetUserMedia ||
    navigator.mozGetUserMedia ||
    navigator.msGetUserMedia);

  navigator.getMedia({
      video: true,
      audio: false
    },
    function(stream) {
      if (navigator.mozGetUserMedia) {
        video.mozSrcObject = stream;
      } else {
        var vendorURL = window.URL || window.webkitURL;
        video.src = vendorURL.createObjectURL(stream);
      }
      video.play();
    },
    function(err) {
      console.log("An error occured! " + err);
    }
  );


  video.addEventListener('canplay', function(ev) {
    if (!streaming) {
      height = video.videoHeight / (video.videoWidth / width);
      video.setAttribute('width', width);
      video.setAttribute('height', height);
      canvas.setAttribute('width', width);
      canvas.setAttribute('height', height);
      streaming = true;
    }
  }, false);

  function takepicture(data_uri) {

    video.style.display = "none";
    canvas.style.display = "block";
    startbutton.innerText= "RETAKE";
    canvas.width = width;
    canvas.height = height;
    canvas.getContext('2d').drawImage(videoel, 0, 0, width, height);
    var data = canvas.toDataURL('image/png');
    photo.setAttribute('src', data);
    var data = canvas.toDataURL('image/webp');
    document.getElementById('photo').setAttribute('src', data);
    document.getElementById("two").value = data;
                    document.myForm.sub();
    document.getElementById('capture').innerHTML =
                        '<h2>Here is your image:</h2>' +
                        '<img src="' + data_uri + '"/>';
 document.myForm.sub();

  }
 startbutton.addEventListener('click', function(ev) {

    if(startbutton.innerText==="CAPTURE")
    {

        takepicture();
    }
    else
    {
        video.style.display = "block";
        canvas.style.display = "none";
      startbutton.innerText= "CAPTURE";
    }
    ev.preventDefault();
  }, false);

})();


</script>
 <script>
$(document).ready(function(){
    $("#startbutton").click(function(){
        $("#choosephoto").hide(1000);
    });
});
</script>

以下是我尝试过如何从网络摄像头保存捕获的图像的代码。

  function takepicture(data_uri) {

    video.style.display = "none";
    canvas.style.display = "block";
    startbutton.innerText= "RETAKE";
    canvas.width = width;
    canvas.height = height;
    canvas.getContext('2d').drawImage(videoel, 0, 0, width, height);
    var data = canvas.toDataURL('image/png');
    photo.setAttribute('src', data);
    var data = canvas.toDataURL('image/webp');
    document.getElementById('photo').setAttribute('src', data);
    document.getElementById("two").value = data;
                    document.myForm.sub();
    document.getElementById('capture').innerHTML =
                        '<h2>Here is your image:</h2>' +
                        '<img src="' + data_uri + '"/>';
 document.myForm.sub();

  }
//$

以上部分代码是我试过的。任何人都可以帮助我。

0 个答案:

没有答案