Использование BitmapRegionDecoder для загрузки больших изображений

1

Я пытаюсь загрузить очень большое изображение из Интернета в приложении Android-планшета. Я знаю, как загружать образец меньшего размера, но заметил, что он препятствует разрешению изображений. Андроидные документы рассказывают мне о BitmapRegionDecoder, чтобы помочь загружать изображения в плитки, но на них, похоже, не много документации. Я делаю что-то вроде этого:

BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(inputstream, false);

Я понимаю, что мне нужно прокручивать код ниже столько раз, сколько требуется для получения всего изображения, передавая разные объекты прямой

    region = decoder.decodeRegion(new Rect(0, 0, 50, 50), null);

Но я не понимаю, как поместить все эти биты в нужное положение в одном изображении. Любой пример был бы действительно полезен

  • 0
    То, что вы пытаетесь сделать, звучит так, как будто вы хотите бросить вызов цели декодера региона. Вы также можете попытаться загрузить целое огромное растровое изображение вместо кусочков и соединить их вместе. В конце концов, вы рискуете ошибкой нехватки памяти в любом случае. Смысл декодера региона - получить просто клип из огромного растрового изображения. Одним из вариантов использования может быть представление карты, которое можно панорамировать жестами. Вы бы рассчитали только текущий видимый клип с битовой картой, который загружен с помощью декодера региона, и отобразили бы его в виде карты. Что вам нужно сделать, так это загрузить масштабированную версию.
Теги:
bitmap

2 ответа

1
Лучший ответ

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

  • 1
    Я действительно полагаю, что первоначальное намерение состояло в том, чтобы использовать декодер области, однако, чтобы только загрузить части памяти. Затем используйте эту память для вывода области на дисплей в стиле шахматной доски. Таким образом, изображение на экране размером 6000 x 4000 24MP может быть просмотрено на экране. Стиль мозаики иногда делается с несколькими текстурами через OpenGl.
0

Да, вы можете использовать BitmapRegionDecoder для просмотра больших изображений на основе Tiles

Этот парень здесь реализовал TileBitmapDrawable Class, который вы можете подключить к своему представлению изображения:

https://github.com/diegocarloslima/ByakuGallery

Ещё вопросы

Сообщество Overcoder
Наверх
Меню