2015-09-16 41 views
2

我正嘗試從Cordova項目的URI加載圖像。如何使用Cordova從URI加載Android上的圖像

下面的這段代碼在Windows Phone上工作正常,但在Android上我無法加載圖像。

$(document).ready(function(){ 
    $("#btnTest").on("click", loadImage); 
    $("#btnTestUsingDataUrl").on("click", loadImageFromDataURL); 
}); 

function loadImage(){ 
    navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, destinationType: Camera.DestinationType.FILE_URI, sourceType: 0 }); 
} 

function loadImageFromDataURL() { 
    navigator.camera.getPicture(onPhotoDataSuccessUsingDataURL, onFail, { quality: 50, destinationType: Camera.DestinationType.DATA_URL, sourceType: 0 }); 
} 

function onPhotoDataSuccess(imageURI) { 
    var imgProfile = document.getElementById('imgTest'); 
    imgProfile.src = imageURI; 
    alert(imageURI); 
} 

function onPhotoDataSuccessUsingDataURL(imageURI) { 
    var imgProfile = document.getElementById('imgTest'); 
    imgProfile.src = "data:image/jpeg;base64," + imageURI; 
} 

function onFail(message) { 
    alert('Failed because: ' + message); 
} 

的URI在Android返回是「內容://com.android.providers.media.documents/document/image%3A3449」;

Android版本:5.0.2。

Cordova版本:5.1.1。

相機插件:org.apache.cordova.camera。

使用DataUrl的示例在Android和Windows Phone上均可正常工作。

有人可以幫我嗎?

+0

刪除相機插件並安裝最新從npm與科爾多瓦插件添加科爾多瓦插件相機 – jcesarmobile

+0

@jcesarmobile我創建了一個新項目,並添加了新版本的插件。 –

+0

並且問題依然存在? – jcesarmobile

回答

0

我找到了答案。我正在使用Camera.DestinationType.FILE_URI獲取圖像的路徑並將其存儲以便稍後獲取圖像。

在那之後,我用的FileReader 得到Base64編碼格式的圖像,然後在img標籤追加。

$(document).ready(function() { 
    $("#btnTest").on("click", loadImage); 
}); 

function loadImage() { 
    navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, destinationType: Camera.DestinationType.FILE_URI, sourceType: 0 }); 
} 

function onPhotoDataSuccess(imageURI) { 
    window.resolveLocalFileSystemURL(imageURI, resolveOnSuccess, resOnError); 
} 

function onFail(message) { 
    alert('Failed because: ' + message); 
} 

function resOnError(error) { 
    alert("resOnError - " + error.code); 
} 

function resolveOnSuccess(entry) { 
    entry.file(function (fileInput) { 
     var reader = new FileReader(); 
     reader.onloadend = function (evt) { 
      var base64 = evt.target.result; 
      var imgBase64 = $('#imgTest'); 
      imgBase64.attr('src', base64); 
     }; 
     reader.readAsDataURL(fileInput); 
    }, function() { alert('fail on trying to read the file.') }); 
} 

我希望它可以幫助別人。 =)

相關問題