绘制系列(十八)图形篇-Bitmap

图像与图形处理

Canvas中就保存着一个Bitmap对象,调用canvas的各种绘图函数,最终还是绘制到其中的Bitmap上。我们自定义View是,一般都会重写onDraw(Canvas canvas),这个函数中是自带Canvas的,只需要将画的内容调用Canvas的函数画出来,就会直接显示在对应的View上。其实,View对应着一个Bitmap,而onDraw()中canvas就是通过这个Bitmap创建出来的。

Android中:图片除了.png、.jpg等格式位图,还用资源文件中定义的Drawable对象。

1、Bitmap

bitmap被称为位图,一般位图的文件格式扩展名为.bmp,作为一种逐像素显示的对象,由一个个像素点组成;因为由一个个像素组成,肯定涉及到两个问题:

  1. 如何存储每个像素
  2. 相关的像素点之间能否压缩

1.1、Bitmap在绘图中使用

  1. 转换为BitmapDrawable对象使用

     	BitmapDrawable drawable=new BitmapDrawable(bitmap);
     	iv.setImageDrawable(drawable);
    
  2. 当做画布使用

方式一:使用默认画布

onDraw(Canvas canvas)和dispatchDraw(Canvas canvas)中的Canvas对应这一个Bitmap对象,所有的绘图都是显示这个Bitmap上的,这个Bitmap就是默认画布;

方式二:自建画布

有是我们需要在特定的Bitmap上作画或者只需要一块空白的画布;需要我们自己来创建Canvas对象;

	Bitmap bitmap=Bitmap.createBitmap(200,100,Bitmap.Config.ARGB_8888);

	Canvas canvas=new Canvas(bitmap);

	canvas.drawColor(Color.RED)

1.2、存储每个像素点

一张位图所占的内存=图片长度(px)* 图片宽度 * 一个像素点所占的字节数;

在Android中存储一个 像素所使用的字节数使用枚举类型Bitmap.Config中的各个参数来表示的:

  1. ALPHA_8:表示每个像素只存储8位透明度值,不存储颜色值,即每个像素占一个字节;
  2. ARGB_4444:表示16位ARGB位图,即A、R、G、B各占4位,每一个像素点占2个字节;
  3. ARGB_8888:表示32位ARGB位图,即A、R、G、B各占8位,每一个像素点占4个字节;
  4. RGB_565:表示16位RGB位图,即R占5位,G占6位,B占5位,每一像素点占2个字节;

1.3、bitmap压缩格式

在Android中,压缩格式使用枚举类Bitmap.CompressFormat的成员变量表示JPEG、PNG、WEBP;

第一部分 图片加载

bitmap代表一个位图,BitmapDrawable中封装的图片就是一个bitmap

	BitmapDrawble bd=new BitmapDrawable(bitmap);

Bitmap静态创建bitmap对象

***creatBitmap(Bitmap source,int x,int y,int width,int height)😗**从指定位图指定坐标(x,y)处截取指定宽高的大小,创建新Bitmap

***creatScaleBitmap(Bitmap src,int dstWidth,int dstHeight,boolean filter)😗**对原位图src进行缩放,缩成dstWidth、dstHeight的新位图。

***creatBitmap(int width,int height,Bitmap.config config)😗创建一个指定宽高的新位图

***creatBitmap(Bitmap source,int x,int y,int width,int height,Matrix m,boolean filter)😗**从源位图的指定坐标开始,截取指定宽高的形状,按Matrix指定规则变换创建新的Bitmap

1.2、BitmapFacotry加载Bitmap

作用:从不同数据源中解析、创建Bitmap对象

***decodeByteArray(byte[] data,int offset,int length):***从指定字节数组的offset位置开始,将指定长度的字节数据解析成bitmap对象

decodeFile(String path):从指定文件中解析创建bitmap对象,path必须为全路径名;

decodeFileDescriptor(FileDescriptor fd):从指定FileDescriptor对应的文件中解析创建bitmap对象

decodeResource(Res

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值