Android обработка изображений с высоким разрешением - PullRequest
6 голосов
/ 28 декабря 2011

Из экспериментов и прочтения других постов , как этот , кажется, что на Android трудно обрабатывать изображения с высоким разрешением, поскольку существует ограничение на количество памяти, которое виртуальная машина может выделить.

Загрузка изображений с 8-мегапиксельной камеры занимает около 20 МБ памяти.

Я понимаю, что простое решение - это уменьшить изображение при загрузке (BitmapFactory предлагает такую ​​опцию), но я все еще хотел бы обработатьизображение в полном разрешении: камера снимает 8MP, зачем мне использовать только 4MP и снижать качество.

Кто-нибудь знает хорошие обходные пути для этого?

Ответы [ 3 ]

2 голосов
/ 28 декабря 2011

Действительно, это сложно.Но если изображение имеет какой-то непрерывный растровый формат, вы можете отобразить его (см. Java.nio.ByteBuffer) - таким образом вы получите байтовый буфер без его выделения.

2 голосов
/ 28 декабря 2011

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

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

1 голос
/ 28 декабря 2011

2 вещи:

  1. Оформить заказ в галерее Сота. Это делает это рендеринг на основе плитки. Вы можете увеличить изображение, и тогда вы увидите, что текущая часть имеет более высокое разрешение, чем другие части. Если вы поворачиваете вокруг, вы видите, как он рендерится.

  2. При использовании собственного кода (NDK) ограничение ресурса не установлено. Таким образом, вы можете попытаться загрузить все собственные данные и каким-то образом получить их с помощью JNI, но я сомневаюсь, что это лучше, чем галерея honeycom.

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