`

Android bitmap序列化

 
阅读更多

最近在开发中需要用到图片bitmap的序列化并进行传递,发现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();
}
}

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

分享到:
评论

相关推荐

    Android中的Bitmap序列化失败的解决方法

    主要介绍了Android中的Bitmap序列化失败的解决方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    Android Bitmap压缩方法的选择详解

    主要介绍了Android Bitmap压缩方法的选择的相关资料,需要的朋友可以参考下

    Android序列化传递数据

    本代码就是简单的Parcelable与Serializable序列化,包括bitmap数组如何在应用中传递...

    android数据Bitmap数据的过程

    该文档教我们如何在android保持中保持bitmap数据以及读取的过程

    s4-png:将S4 PNG Java序列化的对象转换为实际图像

    s4-png 将S4 PNG Java序列化的对象转换为实际图像三星Galaxy S4库存浏览器创建的PNG文件实际上是TabData序列化的对象。 该程序将存储在TabData对象中的位图数据转换为可通过普通照片软件查看的PNG文件。编译javac * ...

    Android Intent传递数据大小限制详解

    Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化对象,Parcelable与Serializable。 Intent传递数据时,如果数据太大,可能会出现异常。比如App闪退,或是Intent发送不成功,logcat...

    android数据缓存

    android数据缓存(可设置时间):普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 byte数据。

    ASimpleCache一个简单的缓存框架Android源代码

    ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件。 它可以缓存普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 byte数据。

    Android静默安装常用工具类

    序列化工具类,可用于序列化对象到文件或从文件反序列化对象,如: deserialization(String filePath) 从文件反序列化对象 serialization(String filePath, Object obj) 序列化对象到文件 源码可见SerializeUtils....

    Android-Architecture:【面试期刊+Android体系化学习】体系化学习Android架构知识,同时每月有面试期刊帮助你复习

    形成自己的体系)知识体系网络知识Android系统(framework层)Java知识Java反射全解析(使用、原理、问题、应用)漫谈序列化一网打尽“类”的初始化实例化知识点视图Window十二问Bitmap知识点集合性能优化启动优化

    AndroidCache

    序列化的java对象 byte数据 3.支持配置 可以配置缓存路径,缓存大小,缓存数量等。 可以设置缓存超时时间,缓存超时自动失效,并被删除。 支持多进程。 #2.使用(参看demo) public class SaveBitmapActivity ...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--内容提供者之短信的序列化对象读写 |--内容提供者之短信的获取与写入 |--内容提供者之联系人读写与批量操作 |--内容提供者之获取通话记录 |--内容提供者的定义 |--写入联系人信息 |--利用FinalHttp实现多线程断点...

    条码制作软件 Barcode Studio 15.14.1 中文多语版.zip

    通用数据采集工具,例如 TWedge 或 Scan-IT to Office, 一个用于 移动数据收集 的 Android / iOS 应用, 完善我们的产品组合。我们可以 根据要求提供定制解决方案。 条码制作软件 Barcode Studio 中文版条码制作...

Global site tag (gtag.js) - Google Analytics