Android: получите Thumbnailpath и Imagepath из галереи
Я немного застрял в запросе. искал много, но не получил желаемого результата.. Так что, пожалуйста, помогите мне решить эту проблему..
Я хочу выбрать изображение из галереи, и я добился успеха в этом.. но теперь я хочу получить путь к миниатюре тоже...
Я знаю, что могу создать миниатюру из пути к изображению... но мне нужен строковый путь миниатюры, чтобы я мог использовать его в массиве....
Поэтому, когда я выбираю любое изображение из галереи, я хочу эти два пути..
- Путь к изображению
- Путь к миниатюре или идентификатор выбранного изображения
Мой код..
открыть галерею..
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
}
}
}