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

Android小記讀取Bitmap 的幾種方式和優化內存溢出

想讀取本地項目裡的資源圖片,但又不能用到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文件。

  Bitmap.bitmap=BitmapFactory.decodeStream(getClass().getResourceAsStream(“/res/drawable/test.png”));

說明一下,我為什麼用第三種方法讀取Bitmap。

因為項目的要求啦,哈哈!廢話。主要是方便把程序的資源圖片插入到本地sqlite中,到時只需傳入/res/drawable + 圖片名就可以讀取到 Bitmap啦。

還有一種情況值得考慮的,就是當圖片資源太大的適合,會出現內存溢出。如何解決呢?

BitmapFactory.Options options = new BitmapFactory.Options();

options.inSampleSize = 2;  //圖片寬高都為原來的二分之一,即圖片為原來的四分一

//以上代碼可以優化內存溢出,但它只是改變圖片大小,並不能徹底解決內存溢出。

Copyright © Linux教程網 All Rights Reserved