2016-09-15 6 views
1

Я разрабатываю приложение, которое снимает фотографию и сохраняет ее в Android/data/package/files. Я хотел бы уменьшить используемое хранилище, поэтому я хотел бы изменить размер фотографии перед ее сохранением. На данный момент я называю новое намерение, передавая как дополнительный выходной путь. Возможно ли передать и размер, необходимый или возможно иметь растровое изображение, прежде чем его сохранить?Сделайте снимок данного размера Android

public void takePicture(View view){ 
    Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    File f = new File(getPath(nameEdit.getText().toString())); 
    path = f.getAbsolutePath(); 
    pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); 
    if (pictureIntent.resolveActivity(getPackageManager())!=null){ 
     startActivityForResult(pictureIntent,REQUEST_IMAGE_CAPTURE); 
    } 
} 

ответ

2

можно пройти также размер хотел

No.

можно иметь битовую карту перед сохранением его?

Не совсем. Вы можете написать свой собственный ContentProvider и использовать для этого Uri, а не файл. Когда приложение камеры попытается сохранить содержимое, вы сначала получите эту информацию в памяти. Тем не менее, вы будете сбой с OutOfMemoryError, так как вам не хватит места для кучи, чтобы держать фотографию с полным разрешением, по всей вероятности.

Вы можете использовать BitmapFactory с inSampleSize набор в BitmapFactory.Options для чтения в файл, когда он был написан с помощью камеры, сохранить уменьшенное изображение, как вы считаете нужным, а затем удалить с полным разрешением изображения. Или, пропустите EXTRA_OUTPUT, и вы получите миниатюрное изображение, возвращенное вам, полученное по телефону getExtra("data") на Intent, переданное в onHandleIntent().

+0

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