Android 載入大圖片,不壓縮圖片

weixin_33670713發表於2016-02-24

android 從Resources和Assets中讀取檔案

在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專案地址

相關文章