正文  图形图像 > Canvas/Bitmap >

Android bitmap序列化

以下是通过byte[]来进行序列化的,因为bitmap是没有序列化的,需要我们去实现,可以选择继承bitmap实现序列化,这里采用byte[]方式。接下来就可以使用Intent的putExtra(String name,Parcelable value)来发送bi......

以下是通过byte[]来进行序列化的,因为bitmap是没有序列化的,需要我们去实现,可以选择继承bitmap实现序列化,这里采用byte[]方式。

接下来就可以使用Intent的putExtra(String name,Parcelable value)来发送bitmap了。

[代码] [Java]代码

import java.io.ByteArrayOutputStream;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Bitmap.CompressFormat;

import android.os.Parcel;

import android.os.Parcelable;

/**

*@author tcwkid

*@date 2011-12-07

*/

public class DetailIcon implements Parcelable{

private Bitmap draw;

private static byte[] byteDraw;

public Bitmap getDraw() {

return draw;

}

public void setDraw(Bitmap draw) {

this.draw = draw;

}

@Override

public int describeContents() {

return 0;

}

@Override

public void writeToParcel(Parcel dest, int flags) {

byteDraw=getBytes(draw);

dest.writeByteArray(byteDraw);//其实这里写入是有顺序的,先写的先读

}

public static final Parcelable.Creator CREATOR=new Creator() {

@Override

public DetailIcon[] newArray(int size) {

return new DetailIcon[size];

}

@Override

public DetailIcon createFromParcel(Parcel source) {

DetailIcon di=new DetailIcon();

source.readByteArray(byteDraw);

di.setDraw(getBitmap(byteDraw));

return di;

}

};

private static Bitmap getBitmap(byte[] data) {

return BitmapFactory.decodeByteArray(data, 0, data.length);

}

private byte[] getBytes(Bitmap bitmap) {

ByteArrayOutputStream baops = new ByteArrayOutputStream();

bitmap.compress(CompressFormat.PNG, 0, baops);

return baops.toByteArray();

}

}