如果我们使用大图像(位图),我们最终会在图像允许的大小(以便显示)上碰壁。我想知道是否有人知道这个限制在哪里?这有很多因素,手机的最大堆大小等。
如果您想显示大图像并使其具有交互性,是否有任何解决方法来处理大图像?
如果您已经解码了图像数据,则可以将它们存储在存储上的文件中,然后映射此缓冲区。
然后您可以通过createBitmap 函数在此缓冲区上创建子图像(图块)
MMapped 内存区域不计入堆,不受垃圾收集的影响,并且由分页子系统处理,绕过通常的文件操作。
要压缩大图像尺寸,您可以使用
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
如果要全屏显示整个图像,请将其委托给内置应用程序:
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(uri, "image/jpeg");
startActivity(i);
当您想将其显示为缩略图等时,请阅读此文档。
This article talks about working with large bitmaps and dealing with memory constraints. It also talks about a few factors that cause the OutOfMemoryErrors such as heap size, other bitmaps loaded into memory and memory fragmentation. Finally, it provides an algorithm to dynamically load the largest possible image file into memory and perform transforms.
http://bricolsoftconsulting.com/handling-large-images-on-android/