andorid小記讀取Bitmap 的幾種方式和最佳化記憶體溢出

來源:互聯網
上載者:User

想讀取本地項目裡的資源圖片,但又不能用到R檔案。查了很多資料終於找到了。
現總結以下幾種讀取Bitmap的方法。
   1.以檔案流的方式,假設在sdcard下有 test.png圖片
FileInputStream fis = new FileInputStream("/sdcard/test.png");
Bitmap bitmap  = BitmapFactory.decodeStream(fis);
   2. 以R檔案的方式,假設 res/drawable下有 test.jpg檔案
 Bitmap  bitmap = BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable.test);
   
  3.以ResourceStream的方式,但不用到R檔案。www.2cto.com
  Bitmap.bitmap=BitmapFactory.decodeStream(getClass().getResourceAsStream(“/res/drawable/test.png”));

說明一下,我為什麼用第三種方法讀取Bitmap。
因為項目的要求啦,哈哈!廢話。主要是方便把程式的資源圖片插入到本地sqlite中,到時只需傳入/res/drawable + 圖片名就可以讀取到 Bitmap啦。

還有一種情況值得考慮的,就是當圖片資源太大的適合,會出現記憶體溢出。如何解決呢?
 
BitmapFactory.Options options = new BitmapFactory.Options();
 
options.inSampleSize = 2;  //圖片寬高都為原來的二分之一,即圖片為原來的四分一
 
//以上代碼可以最佳化記憶體溢出,但它只是改變圖片大小,並不能徹底解決記憶體溢出。


摘自 Scott 的專欄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.