详解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();
} //判断是否回收,若未回收强制回收
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值