Я разрабатываю приложение, которое показывает большие изображения ... Есть много изображений размером около 700x8100 ... Я могу создать объект типа EncodedImage, не вызывая исключения, но когда я пытаюсь выполнить getBitmap, я получаю ошибку OutOfMemory. Это строка, в которой возникает исключение:
Bitmap imgBtm = encodedImagePng.getBitmap();
Есть ли какое-то ограничение на размер разрешения?
Кому-нибудь уже приходилось обрабатывать большие изображения?
Любая помощь будет очень полезной ..
Tks
2 ответа
Перед использованием функции getBitmap () необходимо изменить размер закодированного изображения. Сначала создайте свой EncodedImage, а затем измените его масштаб, используя следующее:
private static EncodedImage rescaleEncodedImage (EncodedImage image, int width, int height) {
EncodedImage result = null;
try {
int currentWidthFixed32 = Fixed32.toFP(image.getWidth());
int currentHeightFixed32 = Fixed32.toFP(image.getHeight());
int requiredWidthFixed32 = Fixed32.toFP(width);
int requiredHeightFixed32 = Fixed32.toFP(height);
int scaleXFixed32 = Fixed32.div(currentWidthFixed32, requiredWidthFixed32);
int scaleYFixed32 = Fixed32.div(currentHeightFixed32, requiredHeightFixed32);
result = image.scaleImage32(scaleXFixed32, scaleYFixed32);
}
catch (Exception ex) {
}
return result;
}
А затем после изменения размера получить от него растровое изображение
Вы не можете считывать изображения большого размера в память устройства. Существуют встроенные методы декодирования изображения при его уменьшении, что позволяет избежать загрузки исходного изображения в память. Попробуйте EncodedImage.scaleImage32, чтобы установить более разумный размер перед получением растрового изображения.
Похожие вопросы
Новые вопросы
blackberry
BlackBerry предлагает множество инструментов разработки, включая BlackBerry Dynamics SDK, Cylance REST API, BlackBerry Workspaces API и SDK, BlackBerry QNX development и BlackBerry UEM REST API. Рассмотрите возможность добавления BlackBerry SDK, который вы используете как дополнительный тег.