• 利用html5调用本地摄像头拍照上传图片


    这个是前台HTML的代码。

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

    下面这个是主要代码了。(jquery)

     1 <script>       
     2 //判断浏览器是否支持HTML5 Canvas          
     3  window.onload = function () {               
     4 try {                   
     5 //动态创建一个canvas元 ,并获取他2Dcontext。如果出现异常则表示不支持                   
     6 document.createElement("canvas").getContext("2d");                   
     7 document.getElementByIdx("support").innerHTML = "浏览器支持HTML5 CANVAS";               
     8 }               
     9 catch (e) {                   
    10 document.getElementByIdx("support").innerHTML = "浏览器不支持HTML5 CANVAS";               }                     };                     
    11 //这段代 主要是获取摄像头的视频流并显示在Video 签中           
    12 window.addEventListener("DOMContentLoaded", function () {               
    13 var canvas = document.getElementByIdx("canvas"),                   
    14 context = canvas.getContext("2d"),                   
    15 video = document.getElementByIdx("video"),                   
    16 videoObj = { "video": true },                   
    17 errBack = function (error) {                       
    18 console.log("Video capture error: ", error.code);                   
    19 };                   
    20 //navigator.getUserMedia这个写法在Opera中好像是navigator.getUserMedianow               
    21 if (navigator.getUserMedia) {                   
    22 navigator.getUserMedia(videoObj, function (stream) {                       
    23 video.src = stream;                       
    24 video.play();                   
    25 }, errBack);               
    26 } else if (navigator.webkitGetUserMedia) 
    27 {                   
    28 navigator.webkitGetUserMedia(videoObj, function (stream) {                       
    29 video.src = window.webkitURL.createObjectURL(stream);                      
    30  video.play();                  
    31  }, errBack);              
    32  }               
    33 //这个是拍照按钮的事件,               
    34 $("#snap").click(function () {                  
    35  context.drawImage(video, 0, 0, 320, 320);                   
    36 //CatchCode();              
    37  });                    
    38  }, false);                     
    39 //定时器           
    40 var interval = setInterval(CatchCode, "300");                              
    41  //这个是 刷新上 图像的          
    42  function CatchCode() {               
    43 $("#snap").click();
    44 //实际运用可不写,测试代 , 为单击拍照按钮就获取了当前图像,有其他用途               
    45 var canvans = document.getElementByIdx("canvas"); 
    46 //获取浏览器页面的画布对象                          
    47 //以下开始编 数据                                    
    48  var imgData = canvans.toDataURL(); //将图像转换为base64数据              
    49  var base64Data = imgData.substr(22); //在前端截取22位之后的字符串作为图像数据                                   
    50 //开始异步上               
    51  $.post("uploadImgCode.ashx", { "img": base64Data }, 
    52   function (data, status) {                   
    53     if (status == "success") {                      
    54        if (data == "OK") {                           
    55          alert("二维 已经解析");                      
    56            }else {                        
    57               // alert(data);                   
    58             }               
    59           } else {            
    60            alert("数据上 失败");            
    61        }            
    62      }, "text");                  
    63    }      
    64  </script>
    65 最后的就是接收经过base64编码之后的图像文件了。
    66 
    67 public void ProcessRequest (HttpContext context) {         
    68  string img;
    69 //接收经过base64编 之后的字符串          
    70 context.Response.ContentType = "text/plain";         
    71  try       {           
    72    img =context.Request["img"].ToString();//获取base64字符串             
    73  byte[] imgBytes = Convert.FromBase64String(img);//将base64字符串转换为字节数组             
    74  System.IO.Stream stream = new System.IO.MemoryStream(imgBytes);//将字节数组转换为字节流             
    75  //将流转回Image,用于将PNG 式照片转为jpg,压缩体积以便保存。             
    76  System.Drawing.Image imgae = System.Drawing.Image.FromStream(stream);             
    77  imgae.Save(context.Server.MapPath("~/Test/") + Guid.NewGuid().ToString()+".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);//保存图片           
    78    context.Response.Write("OK");//输出调用结果                 
    79   }        
    80  catch (Exception msg) {         
    81      img = null;            
    82   context.Response.Write(msg);          
    83     return;                  
    84  }                 
    85 }
  • 相关阅读:
    (III)AOP:第六节:通知
    (III)AOP:第八节:多切面运行顺序
    (IV)JdbcTemplate
    (III)AOP:第三节:AOP配置与使用
    (III)AOP:第十节:AOP 总结
    (III)AOP:第二节:AOP概述
    (III)AOP:第四节:切入点表达式
    (III)AOP:第九节:XML配置切面
    (III)AOP:第五节:当前连接点
    7月3号
  • 原文地址:https://www.cnblogs.com/wuhaojie/p/4450779.html
Copyright © 2020-2023  润新知