2011-08-04 41 views
1

我有一張尺寸爲2560 x 1920的磁盤上的照片。這往往太大,無法加載到內存中,所以我試圖使用BitmapFactory.Options.inSampleSize來節省內存。從文檔:BitmapFactory.Options.inSampleSize未被尊重?

inSampleSize:如果設置爲值> 1,請求解碼器對原始圖像進行二次採樣,返回一個較小的圖像以節省內存。

這是我如何使用它:

BitmapFactory.Options optsDownSample = new BitmapFactory.Options(); 
optsDownSample.inSampleSize = 3; 

Bitmap bmp = BitmapFactory.decodeFile(path, optsDownSample); 

但應用程序仍然在最後一行有時會崩潰那裏,從logcat中我可以看到它試圖分配〜5MB,而且我懷疑這是因爲下采樣並不真正被尊重。

其他人知道這裏可能會發生什麼,我是否正確使用inSampleSize?

感謝

+3

這可能是inSampleSize應該是2的冪?看到http://stackoverflow.com/questions/477572/android-strange-out-of-memory-issue/823966#823966 – Torid

+0

嗯可能,文件只是說兩個權力更容易榮譽,我會給它一槍,謝謝指出! – user291701

+0

好像現在好了,謝謝! – user291701

回答

0

我也在努力理解如何使用BitmapFactory.Options,基於所有我讀過,我相信你只是缺少optsDownSample.inJustDecodeBounds = false;Android Developers網站指示的文檔。

最好的路易斯!