android drawable序列化

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.PixelFormat;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;

import java.io.ByteArrayOutputStream;
import java.io.Serializable;

/** Drawable序列化
* Created by ljl on 14-1-27.
*/
public class SeriDrawable implements Serializable {
    private static final long serialVersionUID = 1L;
    private byte[] mBitmapBytes = null;

    public SeriDrawable(byte[] bitmapBytes) {
        // TODO Auto-generated constructor stub
        this.mBitmapBytes = bitmapBytes;
    }
    public SeriDrawable(Drawable drawable){
        mBitmapBytes= drawableToBytes(drawable);
    }

    public Drawable getDrawable(){
        return bytesToDrawable(mBitmapBytes);
    }
    public byte[] getBitmapBytes() {
        return this.mBitmapBytes;
    }

 


    /**
     * Drawable转换成byte[]
     * @param d
     * @return
     */
    public byte[] drawableToBytes(Drawable d) {
        Bitmap bitmap = this.drawableToBitmap(d);
        return this.bitmapToBytes(bitmap);
    }

 

    /**
     *  Drawable转换成Bitmap
     * @param drawable
     * @return
     */
    public Bitmap drawableToBitmap(Drawable drawable) {
        Bitmap bitmap = Bitmap
                .createBitmap(
                        drawable.getIntrinsicWidth(),
                        drawable.getIntrinsicHeight(),
                        drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
                                : Bitmap.Config.RGB_565);
        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
                drawable.getIntrinsicHeight());
        drawable.draw(canvas);
        return bitmap;
    }

 

 

    /**
     * Bitmap转换成byte[]
     * @param bm
     * @return
     */
    public byte[] bitmapToBytes(Bitmap bm) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
        return baos.toByteArray();
    }

 

 


    /**
     * byte[]转换成Bitmap
     * @param b
     * @return
     */
    public Bitmap bytesToBitmap(byte[] b) {
        if (b.length != 0) {
            return BitmapFactory.decodeByteArray(b, 0, b.length);
        }
        return null;
    }


    /**
     * byte[]转换成Drawable
     * @param b
     * @return
     */
    public Drawable bytesToDrawable(byte[] b) {
        Bitmap bitmap = this.bytesToBitmap(b);
        return this.bitmapToDrawable(bitmap);
    }

    /**
     * Bitmap转换成Drawable
     * @param bitmap
     * @return
     */
    public Drawable bitmapToDrawable(Bitmap bitmap) {
        BitmapDrawable bd = new BitmapDrawable(bitmap);
        Drawable d = (Drawable) bd;
        return d;
    }

}

转载于:https://my.oschina.net/u/1269759/blog/284158

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值