• 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;  
        }  
    } 
  • 相关阅读:
    改造vant日期选择
    css3元素垂直居中
    npm综合
    (转)网页加水印方法
    Mac下IDEA自带MAVEN插件的全局环境配置
    隐藏注册控件窗口
    High performance optimization and acceleration for randomWalk, deepwalk, node2vec (Python)
    How to add conda env into jupyter notebook installed by pip
    The Power of WordNet and How to Use It in Python
    背单词app测评,2018年
  • 原文地址:https://www.cnblogs.com/diyishijian/p/13328782.html
Copyright © 2020-2023  润新知