zoukankan      html  css  js  c++  java
  • HTML5调用电脑摄像头拍照

    前台代码:

    <div id="contentHolder">       
     <video id="video" width="320" height="320" autoplay>
    </video>       
     <button id="snap" style="display:none"> 拍照</button>        
    <canvas style="display:none" id="canvas" width="320" height="320">
    </canvas> 
       </div>

    JS代码:

    <script>    //这段代 主要是获取摄像头的视频流并显示在Video 签中           
    window.addEventListener("DOMContentLoaded", function () {            
       var canvas = document.getElementById("canvas"),              
         context = canvas.getContext("2d"),                
       video = document.getElementById("video"),          
             videoObj = { "video": true },             
          errBack = function (error) {           
                console.log("Video capture error: ", error.code);    
                   };               
        //navigator.getUserMedia这个写法在Opera中好像是navigator.getUserMedianow       
            if (navigator.getUserMedia) {     
                  navigator.getUserMedia(videoObj, function (stream) {
                           video.src = stream;                
           video.play();      
                 }, errBack);           
        } else if (navigator.webkitGetUserMedia) {        
               navigator.webkitGetUserMedia(videoObj, function (stream) {          
                 video.src = window.webkitURL.createObjectURL(stream);           
                video.play();           
            }, errBack);           
        }         
          //这个是拍照按钮的事件,          
         $("#snap").click(function () {          
             context.drawImage(video, 0, 0, 320, 320);     
                  //CatchCode();           
        });           
              }, false);           
              //定时器         
      var interval = setInterval(CatchCode, "300");      
                             //这个是 刷新上 图像的        
       function CatchCode() {        
           $("#snap").click();
    //实际运用可不写,测试代 , 为单击拍照按钮就获取了当前图像,有其他用途    
               var canvans = document.getElementById("canvas"); 
    //获取浏览器页面的画布对象                       
       //以下开始编 数据   
                                      var imgData = canvans.toDataURL(); 
    //将图像转换为base64数据
                   var base64Data = imgData.substr(22); 
    //在前端截取22位之后的字符串作为图像数据       
                                //开始异步上             
       $.post("uploadImgCode.ashx", { "img": base64Data }, function (data, status) {      
                 if (status == "success") {                 
          if (data == "OK") {                
               alert("二维 已经解析");                   
        }                    
       else {              
                 // alert(data);          
                 }          
             }     
                  else {   
                        alert("数据上 失败");                 
      }               }, "text");           
              }      
     </script> 

    后台代码:

    public void ProcessRequest (HttpContext context) {    
          string img;//接收经过base64编 之后的字符串    
          context.Response.ContentType = "text/plain";        
      try       {           
       img =context.Request["img"].ToString();
    //获取base64字符串          
        byte[] imgBytes = Convert.FromBase64String(img);
    //将base64字符串转换为字节数组            
      System.IO.Stream stream = new System.IO.MemoryStream(imgBytes);
    //将字节数组转换为字节流      
            //将流转回Image,用于将PNG 式照片转为jpg,压缩体积以便保存。         
         System.Drawing.Image imgae = System.Drawing.Image.FromStream(stream);    
              imgae.Save(context.Server.MapPath("~/Test/") + Guid.NewGuid().ToString()+".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);//保存图片             
     context.Response.Write("OK");//输出调用结果                
       }          catch (Exception msg)          {             
     img = null;            
      context.Response.Write(msg);      
            return;               
        }              
         }

    代码来源:http://bbs.9ria.com/thread-215588-1-1.html

  • 相关阅读:
    模式的作用就是解耦,解耦,再解耦,让事情变简单、可控制。
    系统的同构性分析
    “以客观事物(object)的形式来组织程序”
    String的indexOf()的三种情况
    关于finally关键字
    openSession和getCurrentSession的区别?
    eclipse括号跳转
    final修饰的类能不能创建一个对象
    使用svn从恢复到某个版本的时候会报错
    关于TableModel的中获取表格数据的问题
  • 原文地址:https://www.cnblogs.com/rockchen/p/4551313.html
Copyright © 2011-2022 走看看