Jak uzyskać mapę bitową o określonym rozmiarze (z zapisem w pamięci) od aparatu?Rozmiar mapy bitowej zwracanej przez kamerę za pomocą intencji?
Zaczynam intencję kamery z:
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra("return-data", true);
photoUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "mytmpimg.jpg"));
cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(cameraIntent, REQUEST_CODE_CAMERA);
obsłużyć wynik tutaj:
// Bitmap photo = (Bitmap) intent.getExtras().get("data");
Bitmap photo = getBitmap(photoUri);
Teraz, jeśli mogę użyć komentowanej linii - uzyskać bitmapy bezpośrednio, mam zawsze 160 x 120 bitmapa, a to za mało. Jeśli załaduję go z identyfikatora URI za pomocą pewnych standardowych rzeczy znalezionych (metoda getBitmap), to ładuje mapę bitową 2560 x 1920 (!), Która zużywa prawie 20 MB pamięci.
Jak mogę załadować, powiedzmy 480 x 800 (taki sam rozmiar, jaki pokazuje podgląd kamery)?
Bez konieczności ładowania pamięci 2560 x 1920 i skalowania w dół.
Czy to pomaga? http://stackoverflow.com/questions/3331527/android-resize-a-large-bitmap-file-to-scaled-output-file –
Prawdopodobnie, ale nie ma sposobu, aby uzyskać to, co widzę na ekranie podczas robienia zdjęcia ...? Nie potrzebuję niczego więcej. – Ixx
Link do Ben Rujil wskazuje na najlepszą odpowiedź, jaką znam. Twój wybór to w zasadzie zamiar wykonania miniatury lub natywne zdjęcie w pliku. Jeśli nie masz aplikacji aparatu, aby zapisać zdjęcie w niższej rozdzielczości, to jest twój wybór. – Sparky