Android bitmap序列化
Android 序列化 bitmap
2023-09-11 14:17:59 时间
最近在开发中需要用到图片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();
}
}
相关文章
- Android系统自带的android.util.Base64的实现源码
- Android Studio “懒人”必备插件android layout id converter
- Android 判断手机是32位CPU还是64位CPU android.os.Build类字段含义
- Android 组件化(一)项目模式管理、模式切换
- android弹出式菜单、弹出式对话框、弹出式窗口
- Android事件侦听器回调方法浅谈
- Xamarin Android组件篇教程RecylerView动画组件RecylerViewAnimators(1)
- Android-ImageView的属性android:scaleType作用
- Android studio的错误:radle sync failed: Cause: failed to find target android-21 :
- 《Android游戏开发详解》——第2章,第2.22节小结
- Android NDK 开发:CMake 使用
- android:Android中用文件初始化sqlite数据库
- 实现Android Studio JNI开发C/C++使用__android_log_print输出Log
- Android Animation学习(六) View Animation介绍
- Android基于UDP的局域网聊天通信
- Android图形显示系统——上层显示1:界面绘制大纲---android的GUI系统
- protobuf解析以及在android端反序列化Demo
- Android Studio报错:Could not find method android() for arguments
- Android编程 EditView 中如何设置最多可以输入的字符数量 属性 android:ems 与 android:maxLength 的区别
- 跌倒检测和识别3:Android实现跌倒检测(含源码,可实时跌倒检测)
- Android Studio升级或更新项目,经常造访的“Could not find com.android.tools.build :gradle: x.x.x”的原因分析
- 【Android】程序设计 ——记账App项目android移动端的实现
- Android内存优化(三)详解内存分析工具MAT
- Android View体系(六)从源码解析Activity的构成
- 【Android开发经验】怎样查看android-support-v4支持包中的源代码
- Android学习笔记之:android更新ui的几种经常用法
- Android之横屏竖屏显示问题