zoukankan      html  css  js  c++  java
  • Android Bitmap Drawable byte[] InputStream 相互转换方法

    用android处理图片的时候,由于得到的资源不一样,所以经常要在各种格式中相互转化,以下介绍了 Bitmap Drawable byte[] InputStream 之间的转换方法:

    
    import java.io.ByteArrayInputStream;  
    import java.io.ByteArrayOutputStream;  
    import java.io.InputStream;   
    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;  
    
    /** 
     * Bitmap与DrawAble与byte[]与InputStream之间的转换工具类 
     * @author Administrator 
     * 
     */  
    public class FormatTools {  
        private static FormatTools tools = new FormatTools();  
    
        public static FormatTools getInstance() {  
            if (tools == null) {  
                tools = new FormatTools();  
                return tools;  
            }  
            return tools;  
        }  
    
        // 将byte[]转换成InputStream  
        public InputStream Byte2InputStream(byte[] b) {  
            ByteArrayInputStream bais = new ByteArrayInputStream(b);  
            return bais;  
        }  
    
        // 将InputStream转换成byte[]  
        public byte[] InputStream2Bytes(InputStream is) {  
            String str = "";  
            byte[] readByte = new byte[1024];  
            int readCount = -1;  
            try {  
                while ((readCount = is.read(readByte, 0, 1024)) != -1) {  
                    str += new String(readByte).trim();  
                }  
                return str.getBytes();  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            return null;  
        }  
    
        // 将Bitmap转换成InputStream  
        public InputStream Bitmap2InputStream(Bitmap bm) {  
            ByteArrayOutputStream baos = new ByteArrayOutputStream();  
            bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);  
            InputStream is = new ByteArrayInputStream(baos.toByteArray());  
            return is;  
        }  
    
        // 将Bitmap转换成InputStream  
        public InputStream Bitmap2InputStream(Bitmap bm, int quality) {  
            ByteArrayOutputStream baos = new ByteArrayOutputStream();  
            bm.compress(Bitmap.CompressFormat.PNG, quality, baos);  
            InputStream is = new ByteArrayInputStream(baos.toByteArray());  
            return is;  
        }  
    
        // 将InputStream转换成Bitmap  
        public Bitmap InputStream2Bitmap(InputStream is) {  
            return BitmapFactory.decodeStream(is);  
        }  
    
        // Drawable转换成InputStream  
        public InputStream Drawable2InputStream(Drawable d) {  
            Bitmap bitmap = this.drawable2Bitmap(d);  
            return this.Bitmap2InputStream(bitmap);  
        }  
    
        // InputStream转换成Drawable  
        public Drawable InputStream2Drawable(InputStream is) {  
            Bitmap bitmap = this.InputStream2Bitmap(is);  
            return this.bitmap2Drawable(bitmap);  
        }  
    
        // Drawable转换成byte[]  
        public byte[] Drawable2Bytes(Drawable d) {  
            Bitmap bitmap = this.drawable2Bitmap(d);  
            return this.Bitmap2Bytes(bitmap);  
        }  
    
        // byte[]转换成Drawable  
        public Drawable Bytes2Drawable(byte[] b) {  
            Bitmap bitmap = this.Bytes2Bitmap(b);  
            return this.bitmap2Drawable(bitmap);  
        }  
    
        // Bitmap转换成byte[]  
        public byte[] Bitmap2Bytes(Bitmap bm) {  
            ByteArrayOutputStream baos = new ByteArrayOutputStream();  
            bm.compress(Bitmap.CompressFormat.PNG, 100, baos);  
            return baos.toByteArray();  
        }  
    
        // byte[]转换成Bitmap  
        public Bitmap Bytes2Bitmap(byte[] b) {  
            if (b.length != 0) {  
                return BitmapFactory.decodeByteArray(b, 0, b.length);  
            }  
            return null;  
        }  
    
        // Drawable转换成Bitmap  
        public Bitmap drawable2Bitmap(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转换成Drawable  
        public Drawable bitmap2Drawable(Bitmap bitmap) {  
            BitmapDrawable bd = new BitmapDrawable(bitmap);  
            Drawable d = (Drawable) bd;  
            return d;  
        }  
    }  
  • 相关阅读:
    [Oracle] Data Guard 系列(5)
    微软安全新闻聚焦-双周刊第三十七期
    小KING教你做android项目(一)
    CF 39E What Has Dirichlet Got to Do with That? (博弈)
    SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确解决方法
    二分图带权最大独立集 网络流解决 hdu 1569
    (step6.1.3)hdu 1875(畅通工程再续——最小生成树)
    linux patch
    fuelSources
    memory_target not supported on this system
  • 原文地址:https://www.cnblogs.com/yelanggu/p/9752844.html
Copyright © 2011-2022 走看看