Android 一张图片(BitMap)占用内存的计算 图片内存优化
在Android开发中,我现在发现很多人还不会对图片占用内存进行很好的计算。
因此撰写该博文来做介绍,期望达到抛砖引玉的作用。
Enum Values | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Bitmap.Config |
ALPHA_8 |
Each pixel is stored as a single translucency (alpha) channel. This is very useful to efficiently store masks for instance. No color information is stored. With this configuration, each pixel requires 1 byte of memory. 此时图片只有alpha值,没有RGB值, 一个像素占用一个字节 |
|||||||||
Bitmap.Config |
ARGB_4444 |
This field is deprecated. Because of the poor quality of this configuration, it is advised to use ARGB_8888 instead. 这种格式的图片,看起来质量太差,已经不推荐使用。 Each pixel is stored on 2 bytes. The three RGB color channels and the alpha channel (translucency) are stored with a 4 bits precision (16 possible values.) This configuration is mostly useful if the application needs to store translucency information but also needs to save memory. It is recommended to use ARGB_8888 instead of this configuration. 一个像素占用2个字节,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各占4个bites 共16bites,即2个字节 |
|||||||||
Bitmap.Config |
ARGB_8888 |
Each pixel is stored on 4 bytes. Each channel (RGB and alpha for translucency) is stored with 8 bits of precision (256 possible values.) This configuration is very flexible and offers the best quality. It should be used whenever possible 一个像素占用4个字节,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各占8个bites 共32bites,即4个字节 这是一种高质量的图片格式,电脑上普通采用的格式。它也是Android手机上一个BitMap的默认格式。 |
|||||||||
Bitmap.Config |
RGB_565 |
Each pixel is stored on 2 bytes and only the RGB channels are encoded: red is stored with 5 bits of precision (32 possible values), green is stored with 6 bits of precision (64 possible values) and blue is stored with 5 bits of precision. This configuration can produce slight visual artifacts depending on the configuration of the source. For instance, without dithering, the result might show a greenish tint. To get better results dithering should be applied. This configuration may be useful when using opaque bitmaps that do not require high color fidelity. 一个像素占用2个字节,没有alpha(A)值,即不支持透明和半透明, Red(R)值占5个bites 对于没有透明和半透明颜色的图片来说,该格式的图片能够达到比较的呈现效果, 相对于ARGB_8888来说也能减少一半的内存开销。因此它是一个不错的选择。 另外我们通过android.content.res.Resources来取得一个张图片时,它也是以该格式来构建BitMap的 从Android4.0开始,该选项无效。即使设置为该值,系统任然会采用 |
透明度 红色 绿色 蓝色
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。