[android] get thumbnail of photo in DCIM

/**
 * @param $context
 * @param path /storage/emulated/0/DCIM/Human/20141013145846.jpg
 * @return bitmap or null
 */
private Bitmap getThumbnail(Context $context, String path)
{
  Cursor cursor = $context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.MediaColumns._ID }, MediaStore.MediaColumns.DATA + "=?",
      new String[] { path }, null);
  if (cursor != null && cursor.moveToFirst())
  {
    int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
    cursor.close();
    return MediaStore.Images.Thumbnails.getThumbnail($context.getContentResolver(), id, MediaStore.Images.Thumbnails.MINI_KIND, null);
  }
  
  cursor.close();
  return null;
}

 

 

dcim 의 사진을 표시해야하는데, 그냥 보여주면 속도도 느리고 out of memory 에러도 뜬다.

그래서 dcim/.thumbnail/ 에 있는 썸네일 사진을 가져와서 보여주면 편하다.

 

MINI_KIND 가 MICRO_KIND 보다 사진이 더 크다.

 

출처 : http://stackoverflow.com/questions/8383377/android-get-thumbnail-of-image-stored-on-sdcard-whose-path-is-known