我的應用程序將有超過350個圖像將從數據庫解碼。我從圖像數據創建位圖並根據設備屏幕分辨率對其進行縮放。當我試圖將所有這些位圖保存到內存中時,我正面臨OutOfMemory異常。然後,BitmapFactory.Options.inPurgeable在各個地方被推薦用作避免OutOfMemoryExceptions的一種方式。Android位圖OutOfMemory問題
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPurgeable = true;
options.inInputShareable = true;
Bitmap bitmap = BitmapFactory.decodeByteArray(imagaeData, 0, size, options);
...
..
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, reqWidth, reqHeight, true);
我將此縮放位圖緩存到HashMap並將其用於圖像視圖。同樣,我在將位圖加載到內存時面臨OutOfMemory異常。我不瞭解inPurgeable是否適合我的情況。我想知道縮放的位圖是否會引用字節數組。當我使用縮放位圖時,它是否具有decodeByteArray中使用的inPurgeable選項的效果。我無法弄清楚如何處理這個位圖內存問題。感謝你的幫助。
在BitmapFactory.Options您可以指定一個縮放比例 – njzk2
我想根據自己定義的比例因子向上或向下放大或縮小。例如,如果我創建的位圖大小是50 X 50,縮放因子是2.0,我想將位圖放大到100 X 100的大小。可以使用BitmapFactory.Options來完成嗎? – Keerthi
不完全。選項包含一個下采樣參數。通常,您將在大小模式下打開位圖以僅獲取大小,然後測量比例因子以獲取降採樣圖像,然後使用此模式以默認模式重新打開圖像,然後在createScaledBitmap中使用此圖像。 – njzk2