android bitmap序列號

import java.io.ByteArrayOutputStream;
02 import android.graphics.Bitmap;
03 import android.graphics.BitmapFactory;
04 import android.graphics.Bitmap.CompressFormat;
05 import android.os.Parcel;
06 import android.os.Parcelable;
07  
08 /**
09 *@author tcwkid
10 *@date 2011-12-07
11 */
12 public class DetailIcon implements Parcelable{
13  
14 private Bitmap draw;
15 private static byte[] byteDraw;
16  
17 public Bitmap getDraw() {
18 return draw;
19 }
20  
21 public void setDraw(Bitmap draw) {
22 this.draw = draw;
23 }
24  
25 @Override
26 public int describeContents() {
27 return 0;
28 }
29  
30 @Override
31 public void writeToParcel(Parcel dest, int flags) {
32 byteDraw=getBytes(draw);
33 dest.writeByteArray(byteDraw);//其實這裏寫入是有順序的,先寫的先讀
34 }
35  
36 public static final Parcelable.Creator CREATOR=new Creator() {
37  
38 @Override
39 public DetailIcon[] newArray(int size) {
40 return new DetailIcon[size];
41 }
42  
43 @Override
44 public DetailIcon createFromParcel(Parcel source) {
45 DetailIcon di=new DetailIcon();
46 source.readByteArray(byteDraw);
47 di.setDraw(getBitmap(byteDraw));
48 return di;
49 }
50 };
51  
52 private static Bitmap getBitmap(byte[] data) {
53 return BitmapFactory.decodeByteArray(data, 0, data.length);
54 }
55  
56 private byte[] getBytes(Bitmap bitmap) {
57 ByteArrayOutputStream baops = new ByteArrayOutputStream();
58 bitmap.compress(CompressFormat.PNG, 0, baops);
59 return baops.toByteArray();
60 }
61 }


但是我們一般不會傳遞bitmap這種大數據,那樣會容易造成內存溢出,想想也知道,如果一個張圖片是10k,流化後是10k,要是有100張圖片就是1000k,想我們的手機,一張圖片就幾m,100張就幾百m,我們一般的做法是傳遞圖片的地址等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章