Get images thumbnail file paths
You should query for MediaStore.Images.Thumbnails.DATA. To modify your example, it would look like this.
String[] projection = {MediaStore.Images.Thumbnails.DATA};
// Create the cursor pointing to the SDCard
Cursor cursor = this.getContentResolver().query( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
projection, // Which columns to return
null, // Return all rows
null,
null);
// Get the column index of the Thumbnails Image ID
Log.d(TAG, "BEFORE");
int columnIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA);
Log.d(TAG, "AFTER1");
for(int i =0;i<cursor.getCount();i++){
cursor.moveToPosition(i);
Log.d("MyTag","BBABA" + i +" : " + cursor.getString(columnIndex));
}
cursor.close();
Reference: How to get imagepath from thumbnail path of a image?
idish
I'm here to improve my knowledge on C#, help the community, and learn some other stuff related to programming.
Updated on June 04, 2022Comments
-
idish almost 2 years
I'm trying to get the thumnail paths, not the bitmaps objects.
When I query for these, some of the thumbnail paths are null for some reason. (I have 1028 thumbnail images in my device, the cursor length is indeed 1028, but still returning nulls) I know there are 1028 thumbnail images because I checked. Here's my code:String[] projection = {MediaStore.Images.Thumbnails._ID}; // Create the cursor pointing to the SDCard cursor = this.getContentResolver().query( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, // Which columns to return null, // Return all rows null, MediaStore.Images.Thumbnails.IMAGE_ID); // Get the column index of the Thumbnails Image ID Log.d(Global.TAG, "BEFORE"); columnIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails._ID); Log.d(Global.TAG, "AFTER1"); for(int i =0;i<cursor.getCount();i++){ cursor.moveToPosition(i); Log.d("MyTag","BBABA" + i +" : " + getThumbnailPathForLocalFile(cursor.getLong(columnIndex))); } cursor.close();
My getThumbnailPathForLocalFile:
String getThumbnailPathForLocalFile(long fileId) { // Log.d(Global., msg) Cursor thumbCursor = null; try { thumbCursor = this.getContentResolver(). query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI , null , MediaStore.Images.Thumbnails.IMAGE_ID + " = " + fileId+ " AND " + MediaStore.Images.Thumbnails.KIND + " = " + MediaStore.Images.Thumbnails.MINI_KIND , null, null); if(thumbCursor.moveToFirst()) { // the path is stored in the DATA column int dataIndex = thumbCursor.getColumnIndexOrThrow( MediaStore.MediaColumns.DATA ); String thumbnailPath = thumbCursor.getString(dataIndex); return thumbnailPath; } } finally { if(thumbCursor != null) { thumbCursor.close(); } } return null; }
Here's my logcat: http://pastebin.com/UZLZF9Pg
After checking, I see that the ids I send are just like the index of the for loop. I'm not even sure that my code is supposed to work, so any other code will be great.
-
idish over 10 yearsThis is great, works!!! Thank you so much, I've been looking so much for this solution :)
-
idish over 10 yearsHey, hopefully you could help me with another little question: I've just removed all my gallery images, and then took around 12 images with the camera. Afterwards, I entered the Gallery, and saw the thumbnails display nicely. However, when I entered my app to display those thumbnails, I see none. After looking the the .Thubnails folder in the DCIM, there are no jpg files at all, but only one weird file that weights 10.9 MB. Do you know why my .Thumbnails folder doesn't show my thumbnails?
-
yogurtearl over 10 years@idish Please open that as a separate question and provide more detail ( what is the name of the 'Weird file'), also phone details and OS version.
-
Allen Vork about 8 yearsI find out that only a few images has thumbnail.I don't know why