最近在开发中需要用到图片bitmap的序列化并进行传递,发现bitmap是没有序列化的,下面是自己实现的一个序列化方法,分享下。
以下是通过byte[]来进行序列化的,因为bitmap是没有序列化的,需要我们去实现,可以选择继承bitmap实现序列化,这里采用byte[]方式。
接下来就可以使用Intent的putExtra(String name,Parcelable value)来发送bitmap了。
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(); } }
时间: 2024-10-13 21:06:20