android中bitmap与字节流之间的相互转换

时间:2023-01-11 18:36:37
  • 将字节数组转换为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, 00, 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;    
  •     }    
  •             
  • }