Изображение андроида с камеры снимается на очень маленьком размере

Im пытается захватить изображение с камеры, сжать его, а затем сохранить его на SD-карту. Если я непосредственно сохраню его на SD-карте, используя код, который приведен ниже, я получаю полное изображение. Но если я попытаюсь загрузить изображение в системе, я получаю супер маленький размер изображения, например 320 на 240, вместо полного 5-мегапиксельного изображения.

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri()); startActivityForResult(intent, CAMERA_PIC_REQUEST); 

Где getImageURI ()

  private Uri getImageUri() { // Store image in dcim file = new File(Environment.getExternalStorageDirectory() + "/DCIM","itshelp.jpg"); imgUri = Uri.fromFile(file); file.deleteOnExit(); Log.e("syS","file is at "+imgUri); return imgUri; } 

Теперь, когда я пытаюсь сохранить его во внутренней памяти, я использую следующий код, который получает мне крошечное изображение:

  public void imageFromCamera() { //code to retrieve image Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intent, CAMERA_PIC_REQUEST); } 

И в моем startActivitForResult у меня есть следующее:

  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) { Bitmap bm = (Bitmap) data.getExtras().get("data"); Log.e("sys", "width is "+bm.getWidth()); //im gettting an extremely small width here OutputStream outStream = null; file = new File(Environment.getExternalStorageDirectory() + "/DCIM","itshelp.png"); try { outStream = new FileOutputStream(file); bm.compress(Bitmap.CompressFormat.JPEG, 70, outStream); outStream.flush(); outStream.close(); Log.i("Hub", "OK, Image Saved to SD"); Log.i("Hub", "height = "+ bm.getHeight() + ", width = " + bm.getWidth()); } catch (FileNotFoundException e) { e.printStackTrace(); Log.i("Hub", "FileNotFoundException: "+ e.toString()); } catch (IOException e) { e.printStackTrace(); Log.i("Hub", "IOException: "+ e.toString()); } } 

Когда вы вызываете намерение камеры без MediaStore.EXTRA_OUTPUT , камера возвращает только маленькую миниатюру, поскольку пакет намерений не предназначен для передачи больших блоков памяти. Из документации SDK для MediaStore :

Стандартное действие Intent, которое можно отправить, чтобы приложение камеры захватило изображение и вернуло его. Вызывающий может передать дополнительный EXTRA_OUTPUT чтобы контролировать, где будет записываться это изображение. Если EXTRA_OUTPUT не присутствует, изображение небольшого размера возвращается в качестве объекта Bitmap в дополнительном поле. Это полезно для приложений, которым требуется только небольшое изображение. Если EXTRA_OUTPUT присутствует, то полноразмерное изображение будет записано в значение Uri EXTRA_OUTPUT .

Intereting Posts
Некоторая Java помогает с источником Android, пожалуйста? Каков список всех триггеров Android Init Language? Как создать экземпляр валюты в стране, не относящейся к ISO 3166, например en_UK? Цвет панели навигации с леденец для Android Изменение размера android datepicker Плагин Android Eclipse – libncurses.so.5 Динамическая настройка содержимого и макета виджета до размера, определяемого пользователем путем изменения размера. Android Шифрование кэша WebView на Android Есть ли реализация Erlang для Android? Обнаружение присутствия FPU на Android Почему я получаю «libcore.io.ErrnoException: open failed: ENOENT» при запуске приложения MIO IOIO? Android Studio застрял на экране загрузки Android: Как настраивать-объявить пространство имен XML в styles.xml? Есть ли способ перехватить URL-адрес, инициированный javascript, в веб-просмотре? Android Layout: горизонтальный Recyclerview внутри вертикального Recyclerview внутри Viewpager с поведением прокрутки