Chcę przyciąć obraz bez uzyskania wyjątku OutOfMemory
.
oznacza to, że mam x, y, szerokość i wysokość przyciętego obrazu i chcę przyciąć oryginalny obraz bez wnoszenia go do pamięci.
Tak, wiem, że BitmapRegionDecoder
jest dobrym pomysłem, ale może przycięty obraz byłby zbyt duży, by przywrócić go do pamięci. Przytnij obraz bez OutOfMemory - Android
EDIT: Chcę Zapisz przycięty obraz nie tylko pokazując go w
ImageView
chcę zapisać go w nowym pliku
bez wymiarów tracących
w tej sytuacji rozdzielczość kadrowanego zdjęcia wynosi 20000x20000, a poniższy kod nie będzie działał przyczyną OOM:
BitmapRegionDecoder bitmapRegionDecoder = BitmapRegionDecoder.newInstance(inputStream, false);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bitmap = bitmapRegionDecoder.decodeRegion(new Rect(width/2 - 100, height/2 - 100, width/2 + 100, height/2 + 100), options);
mImageView.setImageBitmap(bitmap);
użycie inSampleSize w celu zmniejszenia oryginalnego rozmiaru obrazu jest dobre, ale wynik i zapis nie jest już 20000x20000.
Jak mogę wykadrować 25000x25000 i zapisać część obrazu o rozdzielczości 20000x20000 w pliku?
dlaczego głosować w dół? podziel się swoją wiedzą –
Stack Overflow jest przeznaczony do programowania pytań. Jakie jest Twoje pytanie? Jeśli twoje pytanie brzmi "jak to zrobić?", Proszę wyjaśnij, co wypróbowałeś i jakie problemy napotkasz. – CommonsWare
tak! moje pytanie brzmi: jak mam to zrobić w Androidzie? wypróbowałem wszystkie odpowiedzi dotyczące powiązanych pytań w StackOverflow i każda odpowiedź była zależna od obiektu 'Bitmap', który jest zagrożeniem OOM. Nie wiem, która część mojego pytania jest nieprecyzyjna @CommonsWare –