歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android編程之Bitmap圖片壓縮大小

Bitmap圖片太大,會造成內存溢出。一般的都有圖片預覽機制,就是得到一張尺寸小一點的圖片。

這裡所謂的縮小尺寸可不是指在layout中設置一下寬高使圖片縮小(其實質還是一張占內存大圖),而是實實在在的將圖片本身縮小,減小內存占用。

以下是方法,詳細說明都在注釋裡了:

  1. private Bitmap revitionImageSize(String path, int size) throws IOException {  
  2.         // 取得圖片   
  3.         InputStream temp = this.getAssets().open(path);  
  4.         BitmapFactory.Options options = new BitmapFactory.Options();  
  5.         // 這個參數代表,不為bitmap分配內存空間,只記錄一些該圖片的信息(例如圖片大小),說白了就是為了內存優化   
  6.         options.inJustDecodeBounds = true;  
  7.         // 通過創建圖片的方式,取得options的內容(這裡就是利用了java的地址傳遞來賦值)   
  8.         BitmapFactory.decodeStream(temp, null, options);  
  9.         // 關閉流   
  10.         temp.close();  
  11.   
  12.         // 生成壓縮的圖片   
  13.         int i = 0;  
  14.         Bitmap bitmap = null;  
  15.         while (true) {  
  16.             // 這一步是根據要設置的大小,使寬和高都能滿足   
  17.             if ((options.outWidth >> i <= size)  
  18.                     && (options.outHeight >> i <= size)) {  
  19.                 // 重新取得流,注意:這裡一定要再次加載,不能二次使用之前的流!   
  20.                 temp = this.getAssets().open(path);  
  21.                 // 這個參數表示 新生成的圖片為原始圖片的幾分之一。   
  22.                 options.inSampleSize = (int) Math.pow(2.0D, i);  
  23.                 // 這裡之前設置為了true,所以要改為false,否則就創建不出圖片   
  24.                 options.inJustDecodeBounds = false;  
  25.   
  26.                 bitmap = BitmapFactory.decodeStream(temp, null, options);  
  27.                 break;  
  28.             }  
  29.             i += 1;  
  30.         }  
  31.         return bitmap;  

效果圖:

以下是工程文件:

Bitmap圖片壓縮大小源碼下載

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/7月/30日/Android編程之Bitmap圖片壓縮大小

Copyright © Linux教程網 All Rights Reserved