很多時候,在我們使用BitmapFactory 會產生out of memory的錯誤。因為記憶體對android系統是很寶貴的。所以每一個程式都會限制在一定大小的記憶體裡,只要超過了,系統就會顯示out of memory。通常都會發生在載入圖片的時候。 如果一張2592*1936像素大小的圖片,每一個像素又使用ARGB_8888,那麼他的大小就是19M左右(2592*1936*4 bytes)。這跟圖片格式無關,當程式載入圖片到記憶體中時,就是要恢復成Bitmap去對應螢幕上的每一個像素。所以,如果我們要載入照片,因為現在的照片格式都很大,我們不可能一一去了解照片的格式和大小。就需要用到BitmapFactory.Options的功能。 BitmapFactory . Options options = new BitmapFactory . Options (); options . inJustDecodeBounds = true ; BitmapFactory . decodeResource ( getResources (), R . id . myimage , options ); int imageHeight = options . outHeight ; int imageWidth = options . outWidth ; String imageType = options . outMimeType ; 這一段程式的內容是利用options.inJustDecodebounds設定為true。如此 Bitmap Factory . decodeResource ( getResources (), R . id . myimage , options ); 將會返回一個null值,也就是說圖片將不會被載入記憶體中。而只是讀入圖片的基本資料,如長寬和檔案的類形。等讀入圖形的基本資料後,先預先做處理,再讀入記憶體中,就不容易出現out of memory了。 我們來看看deveolper上的例子。 public static int calculateInSampleSize ( BitmapFac...