Открытие jpegs на Android - я получаю исключение OutOfMemoryException - PullRequest
0 голосов
/ 18 января 2011

В моем приложении мне нужно обрабатывать изображения, сделанные встроенными приложениями Android. Они сохраняются в формате JPEG, и мне нужно получить доступ к каждому пикселю. Я пытался создать Bitmap экземпляр из изображения JPEG, но очень часто я получаю OutOfMemoryException. Я не могу изменить размер или обрезать изображение. Существует ли решение?

Ответы [ 2 ]

1 голос
/ 31 января 2013

Оформить BitmapRegionDecoder . Он доступен начиная с уровня API 10. Вы можете декодировать части файла изображения и обрабатывать каждый фрагмент.

1 голос
/ 18 января 2011

BitmapFactory часто вызывает исключение OutOfMemoryException, и я боюсь, что я никогда не обнаруживал никаких обходных путей.Кажется, что он делает свое собственное управление памятью, а иногда он действительно не способен анализировать изображение.В нескольких приложениях, над которыми я работал, которые должны были интенсивно работать с изображениями, мне просто нужно было поймать исключение, а затем оставить пустые места в пользовательском интерфейсе, когда я не мог проанализировать изображение.Иногда, если вы попробуете позже, эти изображения будут анализироваться, предположительно, когда состояние внутренней памяти BitmapFactory работает лучше.

Когда я работал над приложением J2ME, я пытался найти чистый Java с открытым исходным кодом JPEGпарсер, чтобы я мог использовать его на телефонах, которые не имеют встроенной поддержки JPEG.Оказывается, такую ​​вещь трудно найти, и самое близкое, что я мог найти, было похоронено в недрах источника Затмения.Я смог взять этот источник, де-Эклипсифицировать его и попробовать.У него действительно было преимущество чтения построчно (хотя я не уверен, как это было бы с JPEG с прогрессивной разверткой), но это было смехотворно медленно на наших устройствах J2ME (особенно потому, что они были в основном младшими)поэтому мы не использовали его ни для чего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...