我有一个显示大量图像的应用程序,图像的大小可以达到设备的全屏尺寸。所有图像都已下载,我使用imagemagick来减少图像颜色以压缩文件大小,同时保持尺寸相同,以减少下载时间。减少的色彩空间适合我的应用。
问题是,当我将图像加载到android中的Bitmap时,文件大小要大得多,因为ARROM_8888的orroids Bitmap配置,我确实需要ALPHA通道。由于ARGB_4444已被弃用并且存在性能问题,因此我没有使用它。我想知道是否有任何其他方法来减少加载的位图的内存占用,同时保持尺寸与原始尺寸相同?
----更新---
在这里进行讨论以及许多其他搜索/阅读后,似乎没有直接的方式来做到这一点。我可以使用ARGB_4444将每个像素存储为2个字节,而不是每个像素4个字节。问题是ARGB_4444已被弃用,我尝试不使用API的弃用部分,原因很明显。 Android建议使用ARGB_8888这是默认值,因为我需要alpha我必须使用它。由于有许多应用程序不需要这么复杂的颜色空间,所以很高兴看到ARGB_4444或类似的东西成为支持的API的一部分。
答案 0 :(得分:4)
如果您不需要alfa(透明度),您可以使用:
Bitmap.Config.RGB_565
每个像素使用2个字节,而不是4个,将大小减半。
您还应该查看BitmapFactory.Options
:
inSampleSize
inScaled
根据您的要求正确设置的这些值可能会对位图内存要求产生非常积极的影响。
问候。
答案 1 :(得分:0)
阅读我发布的类似答案here
基本上,预蜂窝设备需要位图回收以减少内存使用