Android: получите Thumbnailpath и Imagepath из галереи

Я немного застрял в запросе. искал много, но не получил желаемого результата.. Так что, пожалуйста, помогите мне решить эту проблему..

Я хочу выбрать изображение из галереи, и я добился успеха в этом.. но теперь я хочу получить путь к миниатюре тоже...
Я знаю, что могу создать миниатюру из пути к изображению... но мне нужен строковый путь миниатюры, чтобы я мог использовать его в массиве....

Поэтому, когда я выбираю любое изображение из галереи, я хочу эти два пути..

  1. Путь к изображению
  2. Путь к миниатюре или идентификатор выбранного изображения

Мой код..

открыть галерею..

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, RESULT_LOAD_IMAGE);

OnActivityResult ()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    path = null;

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
            && null != data) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        path = cursor.getString(columnIndex);
        long imageId = cursor.getLong(columnIndex); //getting 0 here... i thought it could give me image id.. :p 
        Log.v("AddEventDataActivity", "Selected Image Path : " + path); // getting image path successfully...
        Log.v("AddEventDataActivity", "Selected Image ID : " + imageId); // ??? 
        cursor.close();

        // tried this but not succeed.. :(
        Cursor thumbcursor = MediaStore.Images.Thumbnails
                .queryMiniThumbnail(getContentResolver(), imageId,
                        MediaStore.Images.Thumbnails.MINI_KIND, null);

        if (thumbcursor != null && thumbcursor.getCount() > 0) {
            thumbcursor.moveToFirst();// **EDIT**
            thumbpath = thumbcursor.getString(thumbcursor
                    .getColumnIndex(MediaStore.Images.Thumbnails.DATA));
        }
        thumbcursor.close();

        Log.v("THUMB", "THUMBNAIL PATH : " + thumbpath); // no value to thumbpath...

    } 
}

Я не мог найти, как решить это...
Любая помощь будет полезна...

2 ответа

Для получения миниатюры

Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(
                             getContentResolver(), selectedImageUri,
                             MediaStore.Images.Thumbnails.MINI_KIND,
                             (BitmapFactory.Options) null );

где selectedImageUri = data.getData();

Я знаю, что это старый, но это сработало для меня:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
            && null != data) {
        Uri selectedImage = data.getData();
        try {
            Long thumbId = Long.parseLong(selectedImage.getLastPathSegment());

            Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(
                    getContentResolver(),
                    thumbId,
                    MediaStore.Images.Thumbnails.MINI_KIND,
                    null
            );
        } catch (NumberFormatException e) {
            //Handle exception
        }
    }
}
Другие вопросы по тегам