Я не хочу использовать какой-либо код изменения растрового изображения, если я могу ему помочь. У меня есть метод, чтобы получить URI миниатюрного MINI, когда я получаю фотографии из галереи, но когда я пытаюсь сделать то же самое с камерой не работает:Android получить миниатюру Uri после получения изображения с камеры
Вот методы:
private Uri getParsedUri(Uri selectedImageUri) {
Uri parsed = null;
try {
String uri = getThumbnailPath(selectedImageUri);
if (uri != null) {
Timber.d("Thumb uri found %s", uri);
File file = new File(uri);
parsed = Uri.fromFile(file);
Timber.d("thumb uri parsed : %s", parsed);
} else {
Timber.d("Thumb uri not found, using : %s", selectedImageUri);
}
} catch (Exception e){
Timber.e(e, "Error getting mini uri");
}
return parsed;
}
private String getThumbnailPath(Uri uri) {
String[] projection = { MediaStore.Images.Media._ID };
String result = null;
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
if (cursor != null && cursor.getCount() > 0) {
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
cursor.moveToFirst();
long imageId = cursor.getLong(column_index);
cursor.close();
Cursor cursor2 = MediaStore.Images.Thumbnails.queryMiniThumbnail(
getContentResolver(), imageId,
MediaStore.Images.Thumbnails.MINI_KIND,
null);
if (cursor2 != null && cursor2.getCount() > 0) {
cursor2.moveToFirst();
result = cursor2.getString(cursor2.getColumnIndexOrThrow(MediaStore.Images.Thumbnails
.DATA));
cursor2.close();
}
}
return result; //always null for pictures from the Camera
}
Вот как я обеспечиваю Ури экстренно для приложения камера:
private void onTakePhotoFromCameraClick() {
final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// takePicUri = Uri.fromFile(getTempFile(ProductNewActivity.this));
takePicUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new ContentValues());
intent.putExtra(MediaStore.EXTRA_OUTPUT,
takePicUri);
startActivityForResult(intent, OPTION_TAKE_PHOTO_FROM_CAMERA);
}
private File getTempFile(Context context) {
final File path = new File(Environment.getExternalStorageDirectory(),
context.getPackageName());
if (!path.exists()) {
path.mkdir();
}
long millis = new Date().getTime();
String name_file = String.valueOf(millis);
File tempImageFile = new File(path, "MyImage_" + name_file + ".tmp");
return tempImageFile;
}
обоих методов получения Uri (либо с помощью распознавателя контента или создания моего обычая Uri, не работают, и я никогда не сможет получить thumbnail. Есть ли способ указать систему на создать эскиз? Всегда ли создается эскиз ?.
Редактировать: Думаю, я не объяснил четко. Мне нужно 2 Uri: один для большого изображения и один для миниатюры. Мне не нужны растровые изображения. Я использую Universal Image Loader для отображения изображений, поэтому мне не нужен небольшой растровый рисунок. Я сам создаю Uri для большого изображения, но я хотел бы найти способ для Android генерировать эскиз, поскольку он уже делает это для фотографий галереи.
Почему голосовать вниз? Не могли бы вы объяснить, почему вы проголосовали, поэтому я могу исправить то, что не так? – vallllll