1

我有一个显示大量图像的应用程序,图像的大小可以不同,直到设备的全屏尺寸。图像全部下载,我使用 imagemagick 减少图像颜色以压缩文件大小,同时保持尺寸相同,以减少下载时间。减少的色彩空间适合我的应用程序。

问题是,当我将图像加载到 android 中的位图中时,由于 android 的 ARGB_8888 位图配置,文件大小要大得多,我确实需要 ALPHA 通道。由于 ARGB_4444 已被弃用并且存在性能问题,我没有使用它。我想知道是否有任何其他方法可以减少加载位图的内存占用,同时保持尺寸与原始尺寸相同?

- - 更新 - -

在这里讨论和许多其他搜索/阅读之后,似乎没有直接的方法可以做到这一点。我可以使用 ARGB_4444 将每个像素存储为 2 个字节,而不是每个像素 4 个字节。问题是 ARGB_4444 已被弃用,出于显而易见的原因,我尽量不使用 API 的弃用部分。Android 建议使用默认的 ARGB_8888,因为我需要 alpha 我必须使用它。由于有许多应用程序不需要如此复杂的色彩空间,因此很高兴看到 ARGB_4444 或类似的东西成为受支持 API 的一部分。

4

2 回答 2

4

如果您不需要 alfa(透明度),您可以使用:

Bitmap.Config.RGB_565

每个像素使用 2 个字节,而不是 4 个,将大小减少一半。

你还应该看看BitmapFactory.Options

inSampleSize
inScaled

这些值根据您的要求正确设置,可能会对位图内存要求产生非常积极的影响。

问候。

于 2012-12-02T20:45:11.233 回答
0

阅读我在此处发布的类似答案

基本上,Pre蜂窝设备需要位图回收以减少内存使用

于 2012-12-02T20:58:48.657 回答