Я пытаюсь загрузить очень большое изображение из Интернета в приложении Android-планшета. Я знаю, как загружать образец меньшего размера, но заметил, что он препятствует разрешению изображений. Андроидные документы рассказывают мне о BitmapRegionDecoder, чтобы помочь загружать изображения в плитки, но на них, похоже, не много документации. Я делаю что-то вроде этого:
BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(inputstream, false);
Я понимаю, что мне нужно прокручивать код ниже столько раз, сколько требуется для получения всего изображения, передавая разные объекты прямой
region = decoder.decodeRegion(new Rect(0, 0, 50, 50), null);
Но я не понимаю, как поместить все эти биты в нужное положение в одном изображении. Любой пример был бы действительно полезен
То, что вы пытаетесь сделать, похоже на то, что вы хотите игнорировать цель декодера области. Вы могли бы также попытаться загрузить все огромное растровое изображение вместо частей и объединить их вместе. В конце концов вы рискуете ошибкой памяти. Точка декодера области получает только клип из огромного растрового изображения. Одним из вариантов использования может быть отображение карты, которое может быть изменено с помощью жестов. Вы бы подсчитали только видимый в настоящий момент клип битмап-нагрузки, который был с декодером области, и отобразите его на карте. То, что вам нужно сделать, это фактически загрузить масштабированную версию.
Да, вы можете использовать BitmapRegionDecoder для просмотра больших изображений на основе Tiles
Этот парень здесь реализовал TileBitmapDrawable Class, который вы можете подключить к своему представлению изображения: