我的可繪製文件夾中有大量資源。所有文件都大於500KB。我必須在srollView中一次加載所有這25個圖像。像往常一樣,我耗盡了內存。有沒有什麼辦法來以編程方式減少圖像的大小。從可繪製文件創建文件
我得到這個函數,但它的參數是一個文件,我不知道如何從drawable創建一個文件。
private Bitmap decodeFile(File f){ Bitmap b = null; try { //Decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; FileInputStream fis = new FileInputStream(f); BitmapFactory.decodeStream(fis, null, o); fis.close(); int scale = 1; if (o.outHeight > IMAGE_MAX_SIZE || o.outWidth > IMAGE_MAX_SIZE) { scale = Math.pow(2, (int) Math.round(Math.log(IMAGE_MAX_SIZE/(double) Math.max(o.outHeight, o.outWidth))/Math.log(0.5))); } //Decode with inSampleSize BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; fis = new FileInputStream(f); b = BitmapFactory.decodeStream(fis, null, o2); fis.close(); } catch (FileNotFoundException e) { } return b; }
我必須去thorugh此屏幕循環多次的一些遍歷系統顯示內存不足,它是去除從堆棧後面的其他意見後,但我真的需要它。 請幫幫我。
感謝您的幫助。我得到這個錯誤... InputStream is =(InputStream)getResources()。openRawResource(R.drawable.image);請告訴我如何創建該文件也 – James 2011-05-05 10:13:14
我不得不像這樣施放它。 InputStream是=(InputStream)getResources()。openRawResource(R.drawable.simplelist); – James 2011-05-05 10:13:42
「getResources」是一個在Activity類下定義的函數,因此您確定您擁有活動的上下文,您可以在其中編寫獲取輸入流的代碼。 – mudit 2011-05-05 10:14:56