我试图基于拇指路径获取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;
}
Run Code Online (Sandbox Code Playgroud)
上面的方法是根据我的需要进行位修改,并且在Toasting上没有返回任何内容,请告诉我如何使用缩略图路径检索图像路径?
经过很长一段时间和不懈的尝试,解决方案就在这里
1.你需要找到的图片ID,它是由缩略图表图像表图像唯一的ID,查询到缩略图提供商(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI),如果你不明白,请参阅这里,具体IMAGE_ID,
第一步就是搞定reterievedImageId.
reterievedImageId=Long.parseLong(cursor.getString(imageIdInImages));
Run Code Online (Sandbox Code Playgroud)
2.现在使用reterievedImageId得到的图像路径,通过再次quering内容提供商,只是这一次查询的图像媒体提供商(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;
}
Run Code Online (Sandbox Code Playgroud)
如果您仍有疑问或错误/异常,请发表评论!
| 归档时间: |
|
| 查看次数: |
6826 次 |
| 最近记录: |