1. 程式人生 > >利用html5呼叫本地攝像頭拍照上傳圖片

利用html5呼叫本地攝像頭拍照上傳圖片

  1. <script>     
  2.   //判斷瀏覽器是否支援HTML5 Canvas           
  3. window.onload = function () {          
  4.      try {                   
  5. //動態建立一個canvas元 ,並獲取他2Dcontext。如果出現異常則表示不支援                   document.createElement("canvas").getContext("2d");        
  6.            document.getElementByIdx("support").innerHTML = "瀏覽器支援HTML5 CANVAS";         
  7.       }          
  8.      catch (e) {           
  9.         document.getElementByIdx("support").innerHTML = "瀏覽器不支援HTML5 CANVAS";       
  10.         }                
  11.      };                
  12.      //這段代 主要是獲取攝像頭的視訊流並顯示在Video 籤中           
  13. window.addEventListener("DOMContentLoaded", function () {            
  14.    var canvas = document.getElementByIdx("canvas"),              
  15.      context = canvas.getContext("2d"),                
  16.    video = document.getElementByIdx("video"),          
  17.          videoObj = { "video": true },             
  18.       errBack = function (error) {           
  19.             console.log("Video capture error: ", error.code);    
  20.                };               
  21.     //navigator.getUserMedia這個寫法在Opera中好像是navigator.getUserMedianow       
  22.         if (navigator.getUserMedia) {     
  23.               navigator.getUserMedia(videoObj, function (stream) {
  24.                        video.src = stream;                
  25.        video.play();      
  26.              }, errBack);           
  27.     } else if (navigator.webkitGetUserMedia) {        
  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(); 
  49. //將影象轉換為base64資料
  50.                var base64Data = imgData.substr(22); 
  51. //在前端擷取22位之後的字串作為影象資料       
  52.                             //開始非同步上             
  53.    $.post("uploadImgCode.ashx", { "img": base64Data }, function (data, status) {      
  54.              if (status == "success") {                 
  55.       if (data == "OK") {                
  56.            alert("二維 已經解析");                   
  57.     }                    
  58.    else {              
  59.              // alert(data);          
  60.              }          
  61.          }     
  62.               else {   
  63.                     alert("資料上 失敗");                 
  64.   }               }, "text");           
  65.           }      
  66. </script>