从实验和阅读其他帖子like this one来看,似乎很难在安卓上处理高分辨率图像,因为虚拟机允许分配的内存是有限制的。
加载一个8MP的相机图片需要大约20MB的内存。
我理解简单的解决方案是在加载图像时对图像进行下采样(BitmapFactory提供了这样一个选项),但我仍然希望以全分辨率处理图像:相机拍摄8MP,为什么我只使用4MP并降低质量。
有没有人知道解决这个问题的好办法?
发布于 2011-12-29 02:23:23
2件事:
发布于 2011-12-29 01:29:24
在资源受限的环境中,我认为您唯一的解决方案是分而治之:例如缓存/平铺(如: tiles)
您可以从原始数据文件中加载/保存可管理的图像块来进行处理,而不是一次性加载和处理图像。这不是微不足道的,可能会变得非常复杂,这取决于你想做的处理类型,但如果你不想包含在图像质量上,这是唯一的方法。
发布于 2011-12-29 02:26:12
的确,这很难做到。但是如果图像是某种连续的光栅格式,你可以映射它(参见java.nio.ByteBuffer )-这样你就可以在不分配的情况下获得字节缓冲区。
https://stackoverflow.com/questions/8659090
复制相似问题