Cordova相机插件,从图库获取完整图像路径 [ANDROID]

4

我正在尝试使用Cordova相机插件从图库获取图片,以下是我的操作方式:

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”,正如您在上面所看到的已经设置了。

那我做错了什么?

3个回答

10

我已经找到了一个将以 'content://...' 格式表示的URI转换成完整文件路径的插件,虽然它并不是完美的解决方案,但对我来说是有效的。这个插件是cordova-plugin-filepath,我在getCamera函数的onSuccess回调中使用它:

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

我想知道如何让用户在相机和相册之间进行选择! - Vamsi Pavan Mahesh
那么,只需创建2个按钮,一个将属性“sourceType”设置为“Camera.PictureSourceType.SAVEDPHOTOALBUM”,另一个将同一属性设置为“Camera.PictureSourceType.CAMERA”。 - epergo

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});
}

如果确认,相机将打开;否则,如果您点击取消,则会打开图库。 您还可以根据需要自定义确认按钮的“确定”和“取消”按钮。

0

我猜你代码的问题在这里

mediaType: Camera.MediaType.ALLMEDIA,

要么删除这行,要么使它完整

 mediaType: Camera.MediaType.PICTURE,

愉快的编码...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接