Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Загрузите большое растровое изображение в массив байтов

Автор вопроса: user3727843Ответов: 1

Я получаю ошибку OOM при загрузке большого растрового изображения с помощью BitmapFactory.decodeResource. Я видел другие предложения по сжатию изображения, но для моего приложения сохранение качества абсолютно необходимо. В конце концов мне нужно получить изображение в массив байтов/пикселей. Есть ли способ получить все пиксели в массив без снижения качества или "мозаики" растрового изображения?

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

  • О каком большом изображении идет речь и сколько памяти использует остальная часть вашего приложения? Gabe Sechan 10.07.2014
  • Почему бы не обращаться с растровым файлом как с файлом и не использовать более традиционные методы его чтения с помощью FileInputStream и тому подобного? Grambot 10.07.2014
  • На данный момент приложение их не использует. Формат jpeg 3,5 мб (3200x2500). При сохранении в формате bmp получается около 25 МБ. Может быть, я должен распаковать его в памяти? user3727843 10.07.2014
  • @TheCapn будет ли работать создание FileInputStream, а затем чтение 3/4 байта за раз для каждого пикселя? Я не знал о FileInputStream. user3727843 10.07.2014
  • Вы сделаете цикл, в котором вы читаете разумную сумму из входного потока, скажем, 65534 байта, и добавляете к массиву байтов, пока не закончите. Не возитесь с 4 байтами, так как это замедляет работу. greenapps 10.07.2014
  • благодаря. Кажется, это сработало! user3727843 11.07.2014

androidjavabitmapheapbytearray

Ответы

Ответ 1 · erik

Взгляните на документацию Android по обработке больших растровых изображений http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы