如何將Bitmap序列化

          大家都知道Bitmap沒有實現Serializable接口,如果想通過序列化的方式把Bitmap傳遞到下個目標的時候會報沒有序列化異常,比如有一個實體裏面有一個Bitmap的屬性,通過Bundle類的putSerializable()方法把實體傳遞到下一個Activity的時候就會報剛纔所說的異常,那怎麼辦呢,辦法總是會有的,可以通過把Bitmap轉換成字節數組,同時把存放位圖的Bitmap屬性替換成byte[],在需要顯示位圖的時候即可通過把字節數組轉換回來Bitmap。

 

[java] view plaincopy
  1. 原來的屬性:  
  2. public Bitmap setPic(Bitmap pic){   
  3.     this.pic=pic;  
  4. }  


 

[java] view plaincopy
  1. 改成字節數組:  
  2. public byte[] setPic(byte[] byte){  
  3.     this.pic=byte;  
  4. }  


下面介紹的是如何把Bitmap轉換成byte[ ]:

//該方法的方法參數爲一個Bitmap,最後返回的就是字節數組了。

[java] view plaincopy
  1. public static byte[] getBytes(Bitmap bitmap){  
  2.     //實例化字節數組輸出流  
  3.     ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  4.     bitmap.compress(Bitmap.CompressFormat.PNG, 0, baos);//壓縮位圖  
  5.     return baos.toByteArray();//創建分配字節數組  
  6. }    


接着到把byte[ ]轉換回來Bitmap:
//該方法的方法參數爲一個字節數組,返回的就是Bitmap啦

[java] view plaincopy
  1. public static Bitmap getBitmap(byte[] data){  
  2.       return BitmapFactory.decodeByteArray(data, 0, data.length);//從字節數組解碼位圖  
  3. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章