Android中Bitmap,byte[],Drawable,InputStream相互转化工具类

来源:互联网 发布:象过河软件视频 编辑:程序博客网 时间:2024/05/21 10:04

1、将byte[]转换成InputStream 

    public InputStreamByte2InputStream(byte[] b) {  
       ByteArrayInputStream bais = newByteArrayInputStream(b);  
       return bais;  
    }  
  
2、将InputStream转换成byte[] 
两种方式:
一、
 public static final byte[]InputStream2Bytes(InputStream inStream){
   ByteArrayOutputStream swapStream = newByteArrayOutputStream();
    byte[]buff = new byte[100];
    int rc =0;
    try{
  while ((rc =inStream.read(buff, 0, 100)) > 0) {
  swapStream.write(buff, 0,rc);
  }
  } catch (IOException e){
  // TODO Auto-generatedcatch block
 e.printStackTrace();
  }
    byte[]in2b = swapStream.toByteArray();
    returnin2b;
   }
二、
    public byte[]InputStream2Bytes(InputStream is) {  
       String str = "";  
       byte[] readByte = new byte[1024]; 
       int readCount = -1;  
       try {  
           while((readCount = is.read(readByte, 0, 1024)) != -1) { 
              str += newString(readByte).trim();  
          
           returnstr.getBytes();  
       } catch (Exception e) {  
          e.printStackTrace();  
       }  
       return null;  
    }  
  

3、将Bitmap转换成InputStream  
    public InputStreamBitmap2InputStream(Bitmap bm, int quality) { 
       ByteArrayOutputStream baos = newByteArrayOutputStream();  
       bm.compress(Bitmap.CompressFormat.PNG, quality,baos);  
       InputStream is = newByteArrayInputStream(baos.toByteArray());  
       return is;  
    }  
  
4、将InputStream转换成Bitmap  
    public BitmapInputStream2Bitmap(InputStream is) {  
       return BitmapFactory.decodeStream(is); 
    }  
  
5、Drawable转换成InputStream  
    public InputStreamDrawable2InputStream(Drawable d) {  
       Bitmap bitmap = this.drawable2Bitmap(d); 
       return this.Bitmap2InputStream(bitmap); 
    }  
  
6、InputStream转换成Drawable  
    public DrawableInputStream2Drawable(InputStream is) {  
       Bitmap bitmap = this.InputStream2Bitmap(is); 
       return this.bitmap2Drawable(bitmap); 
    }  
  
7、Drawable转换成byte[]  
    public byte[]Drawable2Bytes(Drawable d) {  
       Bitmap bitmap = this.drawable2Bitmap(d); 
       return this.Bitmap2Bytes(bitmap); 
    }  
8、 byte[]转换成Drawable 
    public DrawableBytes2Drawable(byte[] b) {  
       Bitmap bitmap = this.Bytes2Bitmap(b); 
       return this.bitmap2Drawable(bitmap); 
    }  
  
8、Bitmap转换成byte[] 
    public byte[]Bitmap2Bytes(Bitmap bm) {  
       ByteArrayOutputStream baos = newByteArrayOutputStream();  
       bm.compress(Bitmap.CompressFormat.PNG, 100,baos);  
       return baos.toByteArray(); 
    }  
  
9、byte[]转换成Bitmap  
    public BitmapBytes2Bitmap(byte[] b) {  
       if (b.length != 0) {  
           returnBitmapFactory.decodeByteArray(b, 0, b.length); 
       }  
       return null;  
    }  
  
10、Drawable转换成Bitmap 
    public Bitmapdrawable2Bitmap(Drawable drawable) {  
       Bitmap bitmap = Bitmap  
              .createBitmap( 
                    drawable.getIntrinsicWidth(),  
                    drawable.getIntrinsicHeight(),  
                    drawable.getOpacity() != PixelFormat.OPAQUE ?Bitmap.Config.ARGB_8888  
                           : Bitmap.Config.RGB_565); 
       Canvas canvas = new Canvas(bitmap); 
       drawable.setBounds(0, 0,drawable.getIntrinsicWidth(),  
             drawable.getIntrinsicHeight());  
       drawable.draw(canvas);  
       return bitmap;  
    }  
  
11、Bitmap转换成Drawable 
    public Drawablebitmap2Drawable(Bitmap bitmap) {  
       BitmapDrawable bd = new BitmapDrawable(bitmap); 
       Drawable d = (Drawable) bd; 
       return d;  
   
1 0