Bitmap的高效載入

2021-07-08 10:35:16 字數 1115 閱讀 6554

如何高效的載入乙個bitmap,這是乙個很有意義的話題,因為在我們開發的過程中,經常會遇到這樣錯誤」outofmemoryerror」這樣的錯誤,很多時候都是因為載入bitmap出現的記憶體溢位.

如何載入乙個bitmap

bitmap在andriod中指的是一張,那麼如何載入乙個?bitmapfactory類提供了四類方法:decodefile,decoderesource,decodestream和decodebytefactroy,分別用於支援從檔案系統,資源,輸入流以及位元組陣列中載入乙個物件,在四類方法最終在andriod的底層實現的,對應著bitmapfactory類的幾個native方法.

如何高效的載入乙個bitmap?

其實核心思想很簡單,就是使用bitmapfractory,optins來載入所需尺寸的,通過二次取樣的方法來縮小,從而也減少記憶體的消耗.

二次取樣經過上面的幾個步驟,載入的就是進行縮放後的,當然有時候並不需要縮放.在這裡說明一下injustdecodebounds引數,當此引數設為true的時候,bitmapfactory只會解析原始寬/高的問題,而不會真正的去載入,因此這個操作是比較輕量級的.

public

static bitmap decodesamplebitmapfromresource(resource res,int resid,int reqwidth,int reqheight)

public

static

intcalculateinsamplesize(bitmapfactory.options options,int reqwidth,int reqheight)

}return insamplesize;

}

有了上面的兩個方法,使用起來就簡單多了,比如imageview所期望的大小為100x100畫素的時候,這個時候我們就可以通過如下的方式高效的載入並且顯示:

mimageview.setimagebitmap(decodesampledbitmapfromresourse(getresources(),r.id

.myimage,100,100));

如何高效載入bitmap

對於如何高效載入bitmap,就是採用bitmapfactory.options來載入所需的大小。通過bitmapfactory.options來對進行縮放,主要利用其insamplesize引數,即取樣率。獲取取樣率的步驟一般如下 1 將bitmapfactory.options的injustde...

Bitmap的優化及高效載入

bitmap即位圖。在android中要處理要位圖的載入顯示並不容易,需要嫻熟的管理的裝置記憶體,否則很容易因為點陣圖的載入不恰當占用了應用大量寶貴的記憶體空間,更嚴重的導致應用oom。因此學習好如何高效的載入記憶體十分重要。幸好,現在有許多十分強大的載入框架,它們能夠高效順暢的載入位圖,使用起來也...

Bitmap的高效載入和LruCache快取

本部落格 android應用程式都是有一定記憶體限制的,程式占用了過高的記憶體就容易出現oom outofmemory 異常。因此在展示高解析度的時候,最好先將進行壓縮。壓縮後的大小應該和用來展示它的控制項大小相近。bitmapfactory類提供了四類方法 decodefile decoderes...