2015-07-10 2 views
4

Я пытаюсь получить изображение из галереи с плагином Cordova камеры, это так, как я это делаю:Кордова камеры плагин, получить полный путь к изображению из галереи [ANDROID]

navigator.camera.getPicture(onSuccess, onFail, { 
    quality: 50, 
    sourceType: Camera.PictureSourceType.SAVEDPHOTOALBUM, 
    destinationType: Camera.DestinationType.FILE_URI, 
    mediaType: Camera.MediaType.ALLMEDIA, 
    encodingType: Camera.EncodingType.JPEG 
}); 

Но в моем «OnSuccess» функции я получаю изображение URI в формате:

"content://com.android.providers.media.documents/document/image%3A1509" 

И я хочу, чтобы URI полный путь к изображению, так же, как я понимаю, если я использую камеру вместо:

"file:///storage/emulated/0/Pictures/IMG_20150710_124222.jpg" 

Читая официальную документацию, я видел, что единственное, что я должен сделать, это установить свойство DestinationType в 'FILE_URI', которое уже установлено, как вы можете видеть выше.

Что я делаю неправильно?

ответ

7

Я нашел плагин, который преобразует URI в формате «content: // ...» в полный путь к файлу, это не идеальное решение, но оно работает для меня, плагин cordova-plugin-filepath , я использую его в OnSuccess обратного вызова для функции getCamera:

function onSuccess(imageURI) { 
    window.FilePath.resolveNativePath(imageURI, function(result) { 
    // onSuccess code 
    imageURI = 'file://' + result; 
    . . . 
    }, function (error) { 
    // onError code here 
    } 
} 
+0

Я хотел бы знать, как чтобы пользователь выбирал между камерой и галереей! –

+0

Ну тогда просто создайте 2 кнопки, один из них установит свойство sourceType на «Camera.PictureSourceType.SAVEDPHOTOALBUM», а другой установит то же свойство, что и «Camera.PictureSourceType.CAMERA» – epergo

+0

круто! Thanks man –

1

Вы также можете сделать это с помощью одной кнопки с помощью подтверждающих коробок:

var txt=confirm("Select photo source"); 
if(txt==true){ 
     navigator.camera.getPicture(onSuccess, onFail, { quality: 50,destinationType: Camera.DestinationType.DATA_URL,saveToPhotoAlbum: true,sourceType: Camera.PictureSourceType.CAMERA}); 
} 
else{ 
    navigator.camera.getPicture(onSuccess, onFail, { quality: 50,destinationType: Camera.DestinationType.DATA_URL,saveToPhotoAlbum: true,sourceType: Camera.PictureSourceType.PHOTOLIBRARY}); 
} 

Если нормальны, то открывается камера else, если вы нажмете Отменить, затем откроется галерея

Вы также можете настроить кнопку ok-cancel для подтверждения botton в соответствии с вашими потребностями.

+0

Посетите https://craftpip.github.io/jquery-confirm/ для загруженного окна подтверждения. – Ranjith

0

Я думаю, проблема в коде здесь

mediaType: Camera.MediaType.ALLMEDIA, 

либо удалить эту строку или сделать его

mediaType: Camera.MediaType.PICTURE, 

счастливым кодирования ....

Смежные вопросы