+-
android – 如何从图像的缩略图路径获取imagepath?
我试图基于拇指路径获取imagepath,我已经尝试过解决方案
android-getting-path-to-image-from-thumbnail,但它基于gridview位置,我只检索特定图像.我还从SO中找到了一个示例代码,代码是

private String getImagePathFromThumbPath(String thumbPath)
    {
        String imgPath=null;

//      String[] projection = new String[] {MediaStore.Images.Thumbnails._ID, MediaStore.Images.Thumbnails.IMAGE_ID};
        String[] imagesDataPath={ MediaStore.Images.Media.DATA ,MediaStore.Images.Media._ID};
            //mResolver.query() requires android API 16
        Cursor thumbnails = mResolver.query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, imagesDataPath,MediaStore.Images.Thumbnails.DATA+"=?",new String[]{thumbPath}, null, null);

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

        Cursor imageCursor = mResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, filePathColumn, MediaStore.Images.Media._ID + "=?", new String[] {thumbId}, null);

        if (imageCursor != null && imageCursor.moveToFirst()) {
            // Your file-path will be here
            imgPath= imageCursor.getString(imageCursor.getColumnIndex(filePathColumn[0]));
        }
        return imgPath;
    }

上面的方法是根据我的需要进行位修改,并且在Toasting上没有返回任何内容,请告诉我如何使用缩略图路径检索图像路径?

最佳答案
经过很长一段时间和不懈的尝试,解决方案就在这里

1.您需要在缩略图表中的图像表中找到图像唯一ID的图像ID,如果您不理解,请查询缩略图提供者(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI),参见here,具体为IMAGE_ID,

第1步是获得reterievedImageId.

reterievedImageId=Long.parseLong(cursor.getString(imageIdInImages));

2.现在使用reterievedImageId获取图像路径,再次查询内容提供者,这次只查询Images媒体提供者(MediaStore.Images.Media.EXTERNAL_CONTENT_URI)

String getImagePathFromThumbPath(String thumbPath)
    {
        String imagePath=null;
        if(thumbPath!=null)
        {
            String[] columns_to_return ={MediaStore.Images.Thumbnails.IMAGE_ID};
            String where =MediaStore.Images.Thumbnails.DATA+" LIKE ?";
            long reterievedImageId=-1;
            String valuesAre[]={"%"+thumbPath};
            Cursor cursor = getContentResolver().query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, columns_to_return, where, valuesAre, null);
            if(cursor!=null)
            {           
                int imageIdInImages=cursor.getColumnIndex(MediaStore.Images.Thumbnails.IMAGE_ID);

                for (cursor.moveToFirst();!cursor.isAfterLast(); cursor.moveToNext()) 
                {
                       //STEP 1 to retrieve image ID
                   reterievedImageId=Long.parseLong(cursor.getString(imageIdInImages));
                }
                if(reterievedImageId!=-1)
                {
                       //STEP 2 Now
                    Log.i(TAG, "imageId-"+reterievedImageId);
                    String[] columnsReturn={MediaStore.Images.Media.DATA};
                    String whereimageId=MediaStore.Images.Media._ID+" LIKE ?";
                    String valuesIs[]={"%"+reterievedImageId};
                    Cursor mCursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columnsReturn, whereimageId, valuesIs, null);
                    int rawDataPath= mCursor.getColumnIndex(MediaStore.Images.Media.DATA);
                    for (mCursor.moveToFirst();!mCursor.isAfterLast(); mCursor.moveToNext()) 
                    {
                        imagePath=mCursor.getString(rawDataPath);
                    }
                }
            }
        }   
        return imagePath;
    }

如果您仍有疑问或错误/异常,请发表评论!

点击查看更多相关文章

转载注明原文:android – 如何从图像的缩略图路径获取imagepath? - 乐贴网