我正在开发一个显示大图像的应用程序..有很多图像的大小约为700x8100 ..我可以创建一个类型为EncodedImage的对象,而不会抛出异常,但当我尝试执行getBitmap时,我收到一个OutOfMemory错误。 这是发生异常的行:
Bitmap imgBtm = encodedImagePng.getBitmap();
是否有任何类型的分辨率大小限制?
有没有人必须处理大图片?
任何帮助都非常有用..
韩国社交协会
答案 0 :(得分:1)
在使用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;
}
然后调整大小后从中获取位图
答案 1 :(得分:0)
您无法读取设备内存中如此大的图像。有一些内置的方法可以在缩小图像时解码图像,这样可以避免将原始图像加载到内存中。在获取位图之前,请尝试EncodedImage.scaleImage32设置更合理的维度。