• Android bitmap序列化


    最近在开发中需要用到图片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();
    }
    }
  • 相关阅读:
    epplus
    http://www.cmake.org/
    patheditor2
    emgu cv
    OpenCV
    Tesseract
    Blendar基金会
    安装服务windows,installutil
    R 软件
    历史为什么选择C语言?事实证明:暮年的C语言,依旧宝刀未老!
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4635170.html
Copyright © 2020-2023  润新知