2014-05-19 73 views
1

在我的phonegap應用程序(android版本4.4.2)中,我需要選擇圖像形式的sdcard。在這我不能讀取圖像大小和名稱。我的代碼就像。從圖像專輯中選擇圖像時文件大小不能讀取

function getSkiImage(id,source){ 
    navigator.camera.getPicture(function(imageURI){ 
     alert(imageURI); 
     window.resolveLocalFileSystemURI(imageURI, function(fileEntry) { 
      alert(fileEntry); 
      fileEntry.file(function(fileObj) { 
       alert(fileObj.size); 

      }); 
     }); 


// tried this also 
/*window.requestFileSystem(imageURI, 0, function(data) { 
    alert(data.size); 

}, fail); */ 


}, fail, { quality: 50, 
    destinationType: destinationType.FILE_URI, 
    sourceType: pictureSource.PHOTOLIBRARY }); 
} 

在我的Android設備(V 4.4.2)的專輯節目,如「最近」,「驅動器」,「圖像」,「畫廊」,......當從圖庫中選擇圖像,然後只圖像尺寸爲比畫廊圖像大小getting..other是不是能夠得到..

refered這一點,但沒有獲得成功

Cordova/PhoneGap Photo File Size

在PhoneGap的文檔,他們說:

僅適用於Android 4.4:Android 4.4引入了新的存儲訪問 使用戶能夠更輕鬆地瀏覽和打開所有首選文檔存儲提供商的文檔 。 Cordova有 還沒有完全集成到這個新的存儲訪問框架中。 因此,當destinationType爲FILE_URI時,用戶從「最近」,「驅動器」,「圖像」, 或「外部存儲」文件夾中進行選擇時,getPicture()方法將不會正確返回 圖片。 但是,如果他們首先通過「圖庫」應用程序 ,用戶將能夠正確選擇任何圖片。此StackOverflow問題中記錄了 此問題的潛在解決方法。請參閱 CB-5398來跟蹤此問題。

Android使用意圖將設備上的相機活動啓動爲 捕捉圖像,而在低內存手機上,科爾多瓦活動 可能會死亡。在這種情況下,當恢復Cordova活動時,圖像可能不會顯示。

+0

它顯示什麼錯誤?你看過科爾多瓦的File插件嗎? https://cordova.apache.org/docs/en/3.0.0/cordova_file_file.md.html – smj2393

+0

@ smj2393沒有顯示任何內容... – Vini

+0

問題,你想在真實的設備上測試這個,或者你在嘗試它嗎?模擬器? – Gajotres

回答

1
<!DOCTYPE html> 
<html> 
    <head> 
    <title>Capture Photo</title> 

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
    <script type="text/javascript" charset="utf-8"> 

    var pictureSource; // picture source 
    var destinationType; // sets the format of returned value 

    // Wait for PhoneGap to connect with the device 
    // 
    document.addEventListener("deviceready",onDeviceReady,false); 

    // PhoneGap is ready to be used! 
    // 
    function onDeviceReady() { 
     pictureSource=navigator.camera.PictureSourceType; 
     destinationType=navigator.camera.DestinationType; 
     getPhoto(pictureSource.PHOTOLIBRARY); 
    } 


    function onPhotoURISuccess(imageURI) { 
     alert(imageURI); 

     var largeImage = document.getElementById('largeImage'); 

     largeImage.style.display = 'block'; 


     largeImage.src = imageURI; 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, rfail); 


     window.resolveLocalFileSystemURI(imageURI, onResolveSuccess, fail); 
    } 

    function rfail(e){ 
     alert(e); 
    } 
    function getPhoto(source) { 
     // Retrieve image file location from specified source 
     navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
     destinationType: destinationType.FILE_URI, 
     sourceType: source }); 
    } 
    function onFileSystemSuccess(fileSystem) { 
     console.log(fileSystem.name); 
    } 
    function bytesToSize(bytes) { 
     var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; 
     if (bytes == 0) return 'n/a'; 
     var i = parseInt(Math.floor(Math.log(bytes)/Math.log(1024))); 
     return Math.round(bytes/Math.pow(1024, i), 2) + ' ' + sizes[i]; 
    }; 
    function onResolveSuccess(fileEntry) { 


     filenameofajax=fileEntry.name; 

     var efail = function(evt) { 
      console.log("File entry error "+error.code); 
     }; 
     var win=function(file) { 
      console.log(file); 
      for (var i in file){ 
       alert(i+""+file[i]); 
      } 
      alert(bytesToSize(file.size)); 

     }; 
     fileEntry.file(win, efail); 
    } 
    function efail(e) { 
     alert("esa") 
    } 
    function fail(e) { 
     alert("sa") 
    } 

    // Called if something bad happens. 
    // 
    function onFail(message) { 
     alert('Failed because: ' + message); 
    } 

    </script> 
    </head> 
    <body> 
    <button onclick="capturePhoto();">Capture Photo</button> <br> 
    <button onclick="capturePhotoEdit();">Capture Editable Photo</button> <br> 
    <button onclick="getPhoto(pictureSource.PHOTOLIBRARY);">From Photo Library</button><br> 
    <button onclick="getPhoto(pictureSource.SAVEDPHOTOALBUM);">From Photo Album</button><br> 
    <img style="display:none;width:60px;height:60px;" id="smallImage" src="" /> 
    <img style="display:none;" id="largeImage" src="" /> 
    </body> 
</html> 

檢查這個

相關問題