Android之Bitmap对象和字节流之间的相互转换

将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byte 
import java.io.BufferedOutputStream;    
import java.io.ByteArrayOutputStream;    
import java.io.File;    
import java.io.FileOutputStream;    
import java.io.IOException;    
import java.io.InputStream;    
    
import android.graphics.Bitmap;    
import android.graphics.BitmapFactory;    
import android.graphics.Matrix;    
    
public class ImageDispose {    
        
        
        
    /**  
     * @param 将图片内容解析成字节数组  
     * @param inStream  
     * @return byte[]  
     * @throws Exception  
     */    
    public static byte[] readStream(InputStream inStream) throws Exception {    
        byte[] buffer = new byte[1024];    
        int len = -1;    
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();    
        while ((len = inStream.read(buffer)) != -1) {    
            outStream.write(buffer, 0, len);    
        }    
        byte[] data = outStream.toByteArray();    
        outStream.close();    
        inStream.close();    
        return data;    
    
    }    
    /**  
     * @param 将字节数组转换为ImageView可调用的Bitmap对象  
     * @param bytes  
     * @param opts  
     * @return Bitmap  
     */    
    public static Bitmap getPicFromBytes(byte[] bytes,    
            BitmapFactory.Options opts) {    
        if (bytes != null)    
            if (opts != null)    
                return BitmapFactory.decodeByteArray(bytes, 0, bytes.length,    
                        opts);    
            else    
                return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);    
        return null;    
    }    
    /**  
     * @param 图片缩放  
     * @param bitmap 对象  
     * @param w 要缩放的宽度  
     * @param h 要缩放的高度  
     * @return newBmp 新 Bitmap对象  
     */    
    public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h){    
        int width = bitmap.getWidth();    
        int height = bitmap.getHeight();    
        Matrix matrix = new Matrix();    
        float scaleWidth = ((float) w / width);    
        float scaleHeight = ((float) h / height);    
        matrix.postScale(scaleWidth, scaleHeight);    
        Bitmap newBmp = Bitmap.createBitmap(bitmap, 0, 0, width, height,    
                matrix, true);    
        return newBmp;    
    }    
        
    /**  
     * 把Bitmap转Byte  
     */    
    public static byte[] Bitmap2Bytes(Bitmap bm){    
        ByteArrayOutputStream baos = new ByteArrayOutputStream();    
        bm.compress(Bitmap.CompressFormat.PNG, 100, baos);    
        return baos.toByteArray();    
    }    
    /**  
     * 把字节数组保存为一个文件  
     */    
    public static File getFileFromBytes(byte[] b, String outputFile) {    
        BufferedOutputStream stream = null;    
        File file = null;    
        try {    
            file = new File(outputFile);    
            FileOutputStream fstream = new FileOutputStream(file);    
            stream = new BufferedOutputStream(fstream);    
            stream.write(b);    
        } catch (Exception e) {    
            e.printStackTrace();    
        } finally {    
            if (stream != null) {    
                try {    
                    stream.close();    
                } catch (IOException e1) {    
                    e1.printStackTrace();    
                }    
            }    
        }    
        return file;    
    }    
            
}    


见博客文章:http://blog.csdn.net/itheima6/article/details/7516631

猜你喜欢

转载自yingang-1982.iteye.com/blog/2085380
今日推荐