详解Bitmap使用,以及BitmapDrawable和BitmapFactory

Android中Bitmap代表一张位图(位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩位图文件图像效果好,但是非压缩格式的,需要占用较大存储空间,不利于在网络上传送)

本文详细介绍了Bitmap相关问题。

1. Bitmap,Dawable,BitmapDrawable

Bitmap是Drawable的一种。通过BitmapDrawable联系,简单地理解为 Bitmap 储存的是像素信息,Drawable 储存的是 对 Canvas 的一系列操作。
而 BitmapDrawable 储存的是「把 Bitmap 渲染到 Canvas 上」这个操作。
Bitmap和Drawable相互转化:
BitmapDrawable里封装的图片就是一个Bitmap对象。可以调用BitmapDrawable的构造器将Bitmap对象包装成BitmapDrawable对象。

BitmapDrawable  drawable=new BitmapDrawable(bitmap);

获取一个BitmapDrawable所包装的Bitmap对象

Bitmap bitmap=drawable.getBitmap();

2,Bitmap常用方法: `

Bitmap bitmap = Bitmap.createBitmap(int width, int height, Config config)//创建指定格式、大小的位图 


Bitmap bitmap = Bitmap.createBitmap(source,x,y,width, height, config);// 建立从源位图坐标(x,y)中取width*height一块区域  


Bitmap bitmap = Bitmap.createScaledBitmap(Bitmap src,int dstWidth,int dstHeight, boolean filter)
//以src为原图,创建新的图像,指定新图像的高(dstHeight)宽(dstWidth)以及是否可变。 

3,BitmapFactory

Bitmap实现在android.graphics包中。但是Bitmap类的构造函数是私有的,外面并不能实例化,只能是通过JNI实例化。这必然是某个辅助类提供了创建Bitmap的接口,而这个类的实现通过JNI接口来实例化Bitmap的,这个类就是BitmapFactory——用于从不同的数据源(file,streams, byte-arrays)中获取bitmap对象。

4,Bitmapfacory 常用方法 :

Bitmap bitmap = BitmapFactory.decodeResource(Resources res, int id)//从指定资源id中获取
Bitmap bitmap = BitmapFactory.decodeFile(String pathName) 
//读取一个资源文件得到一个位图。如果位图数据不能被解码,或者opts参数只请求大小信息时,则返回NULL

5.Bitmap回收机制

使用isRecyled()方法判断是否回收,返回true时回收。使用recycle()方法,强制回收。

Bitmap bitmap=
if(bitmap!=null&&!bitmap.getBitmap().isRecycled()){
     bitmap.getBitmap().recycle();
} //判断是否回收,若未回收强制回收
发布了7 篇原创文章 · 获赞 0 · 访问量 4912

猜你喜欢

转载自blog.csdn.net/qq_29501801/article/details/60143526