zoukankan      html  css  js  c++  java
  • js调用摄像头拍照上传图片

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>js调用摄像头拍照上传图片</title>
        <meta charset="utf-8">
    </head>
    <body>
    <button onclick="openMedia()">开启摄像头</button>
    <video id="video" width="500px" height="500px" autoplay="autoplay"></video>
    <canvas id="canvas" width="500px" height="500px"></canvas>
    <button onclick="takePhoto()">拍照</button>
    <img id="imgTag" src="" alt="imgTag">
    <button onclick="closeMedia()">关闭摄像头</button>
    
    <script>
        let mediaStreamTrack=null; // 视频对象(全局)
        let video ;
        function openMedia() {
            let constraints = {
                video: {  500, height: 500 },
                audio: false
            };
            //获得video摄像头
             video = document.getElementById('video');     
            let promise = navigator.mediaDevices.getUserMedia(constraints);
            promise.then((mediaStream) => {
               // mediaStreamTrack = typeof mediaStream.stop === 'function' ? mediaStream : mediaStream.getTracks()[1];
               mediaStreamTrack=mediaStream.getVideoTracks()
                video.srcObject = mediaStream;
                video.play();
            });
        }
    
        // 拍照
        function takePhoto() {
            //获得Canvas对象
            let video = document.getElementById('video');
            let canvas = document.getElementById('canvas');
            let ctx = canvas.getContext('2d');
            ctx.drawImage(video, 0, 0, 500, 500);
    
    
            // toDataURL  ---  可传入'image/png'---默认, 'image/jpeg'
            let img = document.getElementById('canvas').toDataURL();
            // 这里的img就是得到的图片
            console.log('img-----', img);
            document.getElementById('imgTag').src=img;
    //上传

          $.ajax({
            url:"/xxxx.do"
            ,type:"POST"
            ,data:{"imgData":img}
            ,success:function(data){
            console.log(data);
            document.gauges.forEach(function(gauge) {
            gauge.value =data.data
          });
          }
          ,error:function(){
            console.log("服务端异常!");
          }
          });

    
        }
    
        // 关闭摄像头
        function closeMedia() {
              let stream = document.getElementById('video').srcObject;
              let tracks = stream.getTracks();
    
              tracks.forEach(function(track) {
                track.stop();
              });
    
             document.getElementById('video').srcObject = null;
        }
    </script>
    </body>
  • 相关阅读:
    C51 使用端口 个人笔记
    C51 静态数码管 个人笔记
    C51 矩阵按键 个人笔记
    C51 蜂鸣器 个人笔记
    C51 独立按键 个人笔记
    C51 中断 个人笔记
    CC3200 TI 笔记
    iar修改包含路径的方法
    WCF绑定和行为在普通应用和SilverLight应用一些对比
    用批处理来自动化项目编译及部署(附Demo)
  • 原文地址:https://www.cnblogs.com/51ma/p/11611487.html
Copyright © 2011-2022 走看看