如何处理来自外部源(如Dropbox)的图像的图像路径

时间:2015-01-08 08:47:35

标签: android image bitmap

我开发了图像裁剪器,以便用户可以从图库中裁剪所选图像。当用户使用相机拍摄照片或从图库中选择图片时,会查询图像uri以查找图像元数据,并将图像文件路径传递给各种位图方法以创建位图。

但是现在我已经将用户选择选项扩展到了Dropbox,而且我从意图中获得的uri是以下形式:

01-08 09:11:21.051: I/DROPBOX(2761): file:///storage/emulated/0/Android/data/com.dropbox.android/files/u98667695/scratch/Capture.PNG

对此uri的查询为游标返回null,因此我尝试将uri转换为字符串,删除前7个字符并将该字符串作为图像文件路径传递。如果我从Dropbox上的根目录中选择图像,这可以正常工作...

所以,我的问题是如何从外部来源(如Dropbox)获取图像请求以获取图像文件路径时,意图返回uri请求的图像?

这是我检索文件路径的方法:

    private void getImageData(Uri selectedImage){

        String[] filePathColumn = { MediaStore.Images.Media.DATA };
        String[] fileOrientationColumn = { MediaStore.Images.Media.ORIENTATION };

        Cursor cursor = context.getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
/*      if(cursor == null){
            imageFilePath = selectedImage.toString().substring(6);
            return;
        }
*/      cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        imageFilePath = cursor.getString(columnIndex);

        Log.i("CURSOR path", imageFilePath);

        cursor = context.getContentResolver().query(selectedImage,
                fileOrientationColumn, null, null, null);
        cursor.moveToFirst();
        columnIndex = cursor.getColumnIndex(fileOrientationColumn[0]);
        String fileOrientation = cursor.getString(columnIndex);

        // Izmena
        if(fileOrientation == null)fileOrientation = "0";

        imageOrientation = Integer.parseInt(fileOrientation);
        cursor.close();     

        Log.i("CURSOR orientation", fileOrientation);

    }

1 个答案:

答案 0 :(得分:0)

在上述情况下,您可以执行以下操作。

String filePath="I/DROPBOX(2761): file:///storage/emulated/0/Android/data/com.dropbox.android/files/u98667695/scratch/Capture.PNG";
int firstIndex=filePath.indexOf("file");
String actualPath=filePath.subString(firstIndex);

因此,无论根目录或文件位置如何,actualPath都包含如下所需的路径。

actualPath="file:///storage/emulated/0/Android/data/com.dropbox.android/files/u98667695/scratch/Capture.PNG"