android之Bitmap

Bitmap是重要的图像,在android以及其他的语言平台上都是很重要的。所以我们要好好的研究Bitmap。


常用的公共方法:
boolean compress(Bitmap.CompressFormat format, int quality, OutputStream stream)
把位图的压缩信息写入到一个指定的输出流中。如果返回true,可以通过传递一个相应的输出流到BitmapFactory.decodeStream()来重构该位图。
注意:并非所有的格式都直接支持位图结构,所以通过BitmapFactory返回的位图很可能有不同的位深度,或许会丢失每个象素的alpha值(例如,JPEG 只支持不透明像素)。

public Bitmap copy (Bitmap.Config config, boolean isMutable)
根据该位图的大小产生一个新位图,根据指定的结构设置新位图的结构,然后把位图的像素拷贝到新位图中。如果不支持该转换,或者分配内存失败,那就返回NULL。返回的位图和原图有同样的像素密度。
参数 config 结果图预期的结构;
isMutable 如果是true,那么产生的图片是可变的。(比如,它的像素能被修改)
返回值
新的位图。如果拷贝操作不能执行,则返回NULL。

public static Bitmap createBitmap (int width, int height, Bitmap.Config config)
返回一个指定高度和宽度的不可改变的位图。它的初始密度由getDensity()决定。
参数 width 位图的宽度
height 位图的高度
config 位图的结构
异常
IllegalArgumentException 如果高度或宽度小于等于零,该异常被抛出。
public static Bitmap createBitmap (Bitmap src)
根据源位图返回一个不可改变的位图。新位图可能跟源位图是同一个对象,或者是一个拷贝。新位图被初始化为和源位图有同样的像素密度。
public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter)
从当前存在的位图,按一定的比例创建一个新的位图。
参数 src 用来构建子集的源位图
dstWidth 新位图期望的宽度
dstHeight 新位图期望的高度
返回值 一个新的按比例变化的位图。
public Bitmap extractAlpha ()
返回一个新的位图,该位图从源图中捕获了alpha值。这个方法可能跟Canvas.drawBitmap()一起被画,颜色值从传递过来的画布中获取。
返回值 一个包含源位图alpha通道值的位图。
public final Bitmap.Config getConfig ()
如果这个位图内在的配置是一种公开的格式,那么返回这个配置,否则返回空值。

public int getDensity ()
返回位图的像素密度。
默认的像素密度和当前的显示密度一样,除非当前的应用程序不支持不同的屏幕密度,当它是DENSITY_DEFAULT时。要注意到兼容模式是由最初装载到进程的应用程序决定的。
public final boolean isMutable ()
如果该位图被标记为可改变(比如,能被画进去),那么返回true。
public final boolean isRecycled ()
如果该位图已经被回收,返回true。如果那样,若试图获取它的像素值,一个错误将会发生,并且该位图不会被画。
返回值 如果位图已经被回收,返回true。
public void recycle ()
释放和位图相关的本地对象,且清除对像素数据的引用。该方法不会同步释放像素数据。它仅仅允许在没有其它引用的情况下被系统垃圾回收





Canvas类用来实现绘制.通过组合使用Canvas类的成员函数可以实现随心随欲地绘制图片的任何部分.


Canvas.clipRect:设置显示区域
Canvas.drawBitmap:绘制


例子:
Bitmap b=BitmapFactory.decodeStream("图片编号", null);//读取图片


...


Canvas c = null;//实例Canvas


c.save();//记录原来的canvas状态
c.clipRect(100,100,200,300);//显示从(100,100)到(200,300)的区域(单位:象素)


c.drawBitmap(b,10,0,null); //将阉割过的图片画到(10,0)位置
c.restore();//恢复canvas状态

你可能感兴趣的:(android之Bitmap)