【问题标题】:Cordova camera plugin, obtain full image path from gallery [ANDROID]Cordova 相机插件,从图库 [ANDROID] 获取完整的图像路径
【发布时间】:2015-09-29 02:09:18
【问题描述】:

我正在尝试使用 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”,正如您在上面看到的那样。

我做错了什么?

【问题讨论】:

    标签: android cordova plugins camera gallery


    【解决方案1】:

    我找到了一个插件,可以将 'content://...' 格式的 URI 转换为完整的文件路径,这不是完美的解决方案,但它对我有用,插件是 @987654321 @,我在 getCamera 函数的 onSuccess 回调中使用它:

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

    【讨论】:

    • 我想知道如何让用户在相机和画廊之间进行选择!
    • 那么只需创建2个按钮,一个将属性'sourceType'设置为'Camera.PictureSourceType.SAVEDPHOTOALBUM',另一个将相同的属性设置为'Camera.PictureSourceType.CAMERA'
    【解决方案2】:

    您也可以在确认框的帮助下使用单个按钮来完成:

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

    如果正常,则相机打开 否则,如果您单击取消,则会打开图库

    您还可以根据需要自定义确认按钮的ok-cancel按钮。

    【讨论】:

      【解决方案3】:

      我猜你代码中的问题在这里

      mediaType: Camera.MediaType.ALLMEDIA,
      

      要么删除这一行,要么改成它

       mediaType: Camera.MediaType.PICTURE,
      

      愉快的编码......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多