资源说明:Bitmap简介(摘抄于网络)
位图文件(Bitmap),扩展名可以是.bmp或者.dib。位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。
例如,一幅1024×768分辨率的32位真彩图片,其所占存储字节数为:1024×768×32/(8*1024)=3072KB
位图文件图像效果好,但是非压缩格式的,需要占用较大存储空间,不利于在网络上传送。jpg/png格式则恰好弥补了位图文件的缺点。
在Android中计算bitmap的大小:bitmap.getByteCount()(返回byte)
扫盲
Bitmap是Android系统中用于处理图像的核心类,它用于在内存中表示图像数据。位图(Bitmap)是一种非压缩格式的图像文件,以像素为基本单位,每个像素可以包含多种色彩,如2、4、8、16、24或32位色。这种丰富的色彩表示使得位图图像质量高,但同时也意味着它会占用大量的存储空间,不适合在网络传输中使用。为了克服这个问题,出现了像JPEG和PNG这样的压缩格式,它们能够在保持图像质量的同时减小文件大小。
在Android中,Bitmap对象的大小可以通过`bitmap.getByteCount()`来计算,这会返回Bitmap占用的内存字节数。值得注意的是,Android系统通常使用ARGB_8888作为默认的颜色格式,这意味着每个像素占用4字节(即32位),分别对应透明度(Alpha)、红色(Red)、绿色(Green)和蓝色(Blue)四个通道,每个通道8位。
Android系统提供了几种不同的颜色格式,每种格式下每个像素占用的内存不同:
1. ALPHA_8:仅包含透明度信息,每个像素占用1字节。
2. ARGB_4444:每个颜色通道4位,每个像素占用2字节。
3. RGB_565:红、绿、蓝各5、6、5位,没有透明度,每个像素占用2字节。
4. ARGB_8888:每个颜色通道8位,每个像素占用4字节。
根据实际需求,可以选择适合的颜色格式来优化内存使用。例如,如果不需要透明度,使用RGB_565可以减半内存占用。
在Android 3.0之前,Bitmap存储在Java堆中,只需管理Java层的内存。但从Android 3.0开始,Bitmap存储在内存中,需要同时回收Java层和Native层的内存。因此,建议使用`recycle()`方法来释放不再使用的Bitmap资源,此操作会将Bitmap标记为死状态,防止进一步访问。然而,从Android 3.0后,系统会自动回收不可达的Bitmap对象,所以不强制要求调用`recycle()`。
LruCache是一个泛型类,用于实现基于最近最少使用(LRU)策略的缓存。它利用LinkedHashMap来维护缓存项,当缓存达到指定容量时,会移除最不常使用的条目。`calculateInSampleSize()`函数用于计算缩放比例,以减小加载图像时所需的内存。这个比例用于BitmapFactory在解码图像时缩小源图像的尺寸,以适应特定的最大宽度和高度要求。这有助于降低内存消耗,特别是加载大图时。
此外,Android还提供了创建缩略图的方法,如`thumbnail()`函数所示,它可以读取图片路径,根据指定的最大宽度和高度创建缩略图,并支持自动旋转图片以修正方向信息。
Bitmap在Android开发中扮演着重要角色,理解其工作原理、内存管理以及优化策略对于创建高效、内存友好的应用程序至关重要。开发者需要根据应用的需求和性能考虑选择合适颜色格式、缩放比例以及正确地回收Bitmap资源。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。