想讀取本地項目裡的資源圖片,但又不能用到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; //圖片寬高都為原來的二分之一,即圖片為原來的四分一
//以上代碼可以優化內存溢出,但它只是改變圖片大小,並不能徹底解決內存溢出。