Android 加载大图片,不压缩图片

96
三季人
2016.02.24 16:43* 字数 50

android 从Resources和Assets中读取文件

 电子竞技的发展 www.llsxj.com 在res/raw 和 assets 目录下新建两个文本文件 "test1.txt"   和 "test2.txt" 用以读取,结构如下图。 

 //从resources中的raw 文件夹中获取文件并读取数据   
**public** String getFromRaw(){   
    String result = "";   
        **try** {   
            InputStream in = getResources().openRawResource(R.raw.test1);   
            //获取文件的字节数   
            **int** lenght = in.available();   
            //创建byte数组   
            **byte**[]  buffer = **new** **byte**[lenght];   
            //将文件中的数据读到byte数组中   
            in.read(buffer);   
            result = EncodingUtils.getString(buffer, ENCODING);   
        } **catch** (Exception e) {   
            e.printStackTrace();   
        }   
        **return** result;   
}   
   
//从assets 文件夹中获取文件并读取数据   
**public** String getFromAssets(String fileName){   
    String result = "";   
        **try** {   
            InputStream in = getResources().getAssets().open(fileName);   
            //获取文件的字节数   
            **int** lenght = in.available();   
            //创建byte数组   
            **byte**[]  buffer = **new** **byte**[lenght];   
            //将文件中的数据读到byte数组中   
            in.read(buffer);   
            result = EncodingUtils.getString(buffer, ENCODING);   
        } **catch** (Exception e) {   
            e.printStackTrace();   
        }   
        **return** result;   
}   

BitmapFactory.Options

BitmapFactory.Options这个类,有一个字段叫做 inJustDecodeBounds 。
SDK中对这个成员的说明是这样的: If set to true, the decoder will return null (no bitmap), but the out… 
也就是说,如果我们把它设为true,那么BitmapFactory.decodeFile(String path, Options opt)并不会真的返回一个Bitmap给你,它仅仅会把它的宽,高取回来给你,这样就不会占用太多的内存,也就不会那么频繁的发生OOM了。 示例代码如下:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap bmp = BitmapFactory.decodeFile(path, options);/* 这里返回的bmp是null */

android图片压缩质量参数Bitmap.Config RGB_565 ARGB_8888

相关链接

在压缩之前将option的值设置一下:
options.inPreferredConfig = Bitmap.Config.RGB_565;

Rect类

Rect类:Rect类主要用于表示坐标系中的一块矩形区域

参考链接1
参考链接2

 new  Rect(150, 75, 260, 120)  
这四个 参数 分别代表的意思是:left   top   right   bottom  上下左右呗。啊,不是 是 左 上 右 下。 下面给大家解释  
left : 矩形左边的X坐标  150        ---->图片中的A点 
top:    矩形顶部的Y坐标   75         ---->图片中的B点 
right :  矩形右边的X坐标   260       ----->图片中的C点 
bottom: 矩形底部的Y坐标 120     ------->图片中的D点 

参考文档
github项目地址

Android
Gupao