我想在Android中以实际像素大小显示从SD卡读取的位图。
我不能假设有关位图的任何内容,除了Android支持其图像格式。位图可能很大。
看起来很简单,但是当你考虑Android内存限制时,它会变得更加复杂。
有什么想法吗?
编辑:尝试加载大型位图会导致内存不足错误,因为Android无法分配足够的内存来解码它。您可以加载位图的缩小版本,但这对于以实际像素大小显示位图没有用。问题是关于如何在Android上显示大型位图,同时保持在应用程序的内存限制内(最有可能是将其加载到块中)。
编辑2 :位图可能很大,但在合理的范围内。我说的是用户图片,而不是HD Nasa图片。
答案 0 :(得分:3)
托管代码(Java)的内存限制为16/24 / 32MB,即使您的设备有更多可用内存。我目前正在开发一个需要执行此操作的应用程序,解决方案是在本机代码(NDK)中分配位图,然后将图像视图呈现为Java分配的位图,该位图是显示的大小。在本机代码中,您可以分配设备的所有可用内存,但由于某种原因,虚拟机会限制它。
答案 1 :(得分:1)
自android 2.3(Gingerbread,API Level 10)以来,您可以使用BitmapRegionDecoder。我不知道任何旧的Android版本的解决方案。 (我一直在寻找我的EmailAlbum应用程序)