Android中Bitmap和Drawable

来源:互联网 发布:js ip地址正则表达式 编辑:程序博客网 时间:2024/05/22 14:31

一、相关概念

1、Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象
2、Canvas画布,绘图的目的区域,用于绘图
3、Bitmap位图,用于图的处理
4、Matrix矩阵

二、Bitmap

1、从资源中获取Bitmap

 

2、Bitmap → byte[]

 3、byte[] → Bitmap

 

4、Bitmap缩放

  5、将Drawable转化为Bitmap

6、获得圆角图片 

 7、获得带倒影的图片

 三、Drawable

1、Bitmap转换成Drawable

2、Drawable缩放

public static Drawable zoomDrawable(Drawable drawable, int w, int h) {   
  1.     int width = drawable.getIntrinsicWidth();   
  2.     int height = drawable.getIntrinsicHeight();   
  3.     // drawable转换成bitmap   
  4.     Bitmap oldbmp = drawableToBitmap(drawable);   
  5.     // 创建操作图片用的Matrix对象   
  6.     Matrix matrix = new Matrix();   
  7.     // 计算缩放比例   
  8.     float sx = ((float) w / width);   
  9.     float sy = ((float) h / height);   
  10.     // 设置缩放比例   
  11.     matrix.postScale(sx, sy);   
  12.     // 建立新的bitmap,其内容是对原bitmap的缩放后的图   
  13.     Bitmap newbmp = Bitmap.createBitmap(oldbmp, 00, width, height,   
  14.             matrix, true);   
  15.     return new BitmapDrawable(newbmp);   
  16. }  

 

 

Drawable to Bitmap 应该这么写

 
/**   
  1.      * Drawable 转 bitmap   
  2.      * @param drawable   
  3.      * @return   
  4.      */     
  5.     public static Bitmap drawable2Bitmap(Drawable drawable){     
  6.         if(drawable instanceof BitmapDrawable){     
  7.             return ((BitmapDrawable)drawable).getBitmap() ;     
  8.         }else if(drawable instanceof NinePatchDrawable){     
  9.             Bitmap bitmap = Bitmap     
  10.                     .createBitmap(     
  11.                             drawable.getIntrinsicWidth(),     
  12.                             drawable.getIntrinsicHeight(),     
  13.                             drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888     
  14.                                     : Bitmap.Config.RGB_565);     
  15.             Canvas canvas = new Canvas(bitmap);     
  16.             drawable.setBounds(00, drawable.getIntrinsicWidth(),     
  17.                     drawable.getIntrinsicHeight());     
  18.             drawable.draw(canvas);     
  19.             return bitmap;     
  20.         }else{     
  21.             return null ;     
  22.         }     
  23.     }    

 

http://dyh7077063.iteye.com/blog/970672
0 0
原创粉丝点击