1. 程式人生 > >plus.camera.getCamera()呼叫相機、攝像頭

plus.camera.getCamera()呼叫相機、攝像頭

<div style="line-height: 1.5rem;" class="image-item space" onclick="getImage()">拍照 </div>
<div style="line-height: 1.5rem;" class="image-item space" onclick="getVideo()">錄影 </div>
<div style="line-height: 1.5rem;" class="image-item space" onclick="getPhoto()">從相簿選擇 </div>

1、呼叫相機

 (1)、/呼叫手機攝像頭並拍照  
   function getImage() {      
       var cmr = plus.camera.getCamera();    
       cmr.captureImage(function(p) {    
           plus.io.resolveLocalFileSystemURL(p, function(entry) {    
               compressImage(entry.toLocalURL(),entry.name);    
           }, function(e) {    
               plus.nativeUI.toast("讀取拍照檔案錯誤:" + e.message);    
           });    
       }, function(e) {    
       }, {    
           filter: 'image'   
       });    
   }

(2)、//圖片壓縮
function compressImage(url,filename){    
       var name="_doc/upload/"+filename;  
       plus.zip.compressImage({    
               src:url,//src: (String 型別 )壓縮轉換原始圖片的路徑    
               dst:name,//壓縮轉換目標圖片的路徑    
               quality:90,//quality: (Number 型別 )壓縮圖片的質量.取值範圍為1-100    
               overwrite:true,//overwrite: (Boolean 型別 )覆蓋生成新檔案
               width:'250',
                height:'320'
                
           },    
           function(zip) {  
               //頁面顯示圖片  
               showPics(zip.target,name); 
           },function(error) {    
               plus.nativeUI.toast("壓縮圖片失敗,請稍候再試");    
       });    
   }

(3)、//圖片展示
 function showPics(url,name){ 
     //根據路徑讀取到檔案   
       plus.io.resolveLocalFileSystemURL(url,function(entry){  
           entry.file( function(file){  
               var fileReader = new plus.io.FileReader();  
               fileReader.readAsDataURL(file);  
               fileReader.onloadend = function(e) {  
                    var picUrl = e.target.result.toString();  
                    var img1 = $("#img1").attr("src");//獲取頁面存放圖片標籤的值
                    if(img1 =="" || img1 == undefined){    
                        $("#img1").attr("src",picUrl);//將圖片base64編碼賦值給img標籤
                    }  
               }  
           });  
      });   
   }

2、呼叫攝像頭錄影

(1)、呼叫攝像頭錄影

function getVideo(){
    var cmr = plus.camera.getCamera();
    cmr.startVideoCapture(function(p){
        plus.io.resolveLocalFileSystemURL(p, function(entry){
            entry.file( function(file){
                var fileReader = new plus.io.FileReader();
                showVideo(file);//視訊展示
           } );
        }, function(e){
            alert('讀取錄影檔案錯誤:'+e.message);
        } );
    }, function(e){
    }, {filename:'_doc/camera/',index:1});
}

(2)、/視訊展示
function showVideo(file){
    $("#video0").remove();//每次展示視訊前先刪除上一次生成的video
    var fileSize =(file.size) / (1024*1024);//轉換成M
     fileSize = fileSize.toFixed(1);//保留小數點後一位
     if(fileSize > 30){
         alert('上傳視訊不能大於30M');    
     }else{        
        var vde = '<video style="height:80px; width:100px; object-fit:fill" id="video0" autoplay="autoplay" x5-playsinline="" playsinline="" webkit-playsinline="" loop="loop"></video>';                    
         $(".photo").append(vde);        
        var reader = new plus.io.FileReader();
        reader.readAsDataURL(file);//呼叫自帶方法進行轉換  
        reader.onload = function(e) {  
            $("#video0").attr("src", e.target.result);//將視訊base64編碼放入標籤
        };        
     }        
}

3、呼叫系統資料夾(相簿) 

(1)、//相簿選擇圖片
function getPhoto(){
    plus.gallery.pick(function(path){
        var name = path.substring(path.lastIndexOf("/")+1); 
           compressPhoto(path,name);//圖片壓縮
    }, function(e){
    }, {filter:'image'});
}

(2)、//圖片壓縮
function compressPhoto(url,filename){ 
       var name="_doc/upload/"+filename;  
       plus.zip.compressImage({    
               src:url,//src: (String 型別 )壓縮轉換原始圖片的路徑    
               dst:name,//壓縮轉換目標圖片的路徑    
               quality:90,//quality: (Number 型別 )壓縮圖片的質量.取值範圍為1-100    
               overwrite:true,//overwrite: (Boolean 型別 )覆蓋生成新檔案
               width:'250',
               height:'320'                    
           },    
           function(zip) {  
               //頁面顯示圖片  
               showPhoto(zip.target,name); 
           },function(error) {    
               plus.nativeUI.toast("壓縮圖片失敗,請稍候再試");    
       });    
   }

(3)、//圖片展示
 function showPics(url,name){ 
     //根據路徑讀取到檔案   
       plus.io.resolveLocalFileSystemURL(url,function(entry){  
           entry.file( function(file){  
               var fileReader = new plus.io.FileReader();  
               fileReader.readAsDataURL(file);  
               fileReader.onloadend = function(e) {  
                    var picUrl = e.target.result.toString();  
                    var img1 = $("#img1").attr("src");//獲取頁面存放圖片標籤的值
                    if(img1 =="" || img1 == undefined){    
                        $("#img1").attr("src",picUrl);//將圖片base64編碼賦值給img標籤
                    }  
               }  
           });  
      });   
   }