2012-10-16 39 views
0

我試圖找到一種方法來獲取圖像的尺寸,這樣我就知道它的尺度如何。這樣做的目的是它不會有這些內存問題。使用BitmapFactory獲取圖像上的尺寸可以得到OutOfMemoryError,

所以我在做什麼是:

BitmapFactory image = new BitmapFactory(); 
BitmapFactory.Options opts = new BitmapFactory.Options(); 
image.decodeFile(_path,opts); 
if(opts.outHeight > 2048 || opts.outWidth > 2048){ 
    opts.inSampleSize= 2; 
} 
VIEW.setImageBitmap(image.decodeFile(_path,opts)); 

的問題是,在第一次解碼,它將如果設備可是沒有足夠的內存錯誤。

我這樣做的方式是把它放在trycatch塊,然後添加額外的語句,如果.... opts.outHeight == -1 || opts.outWidth == -1){

所以我想知道的是,有沒有辦法做到我想要的東西,而不會吸收解碼上的太多內存?我只需要知道原始圖像的高度和寬度。

+0

你看到這個[培訓](HTTP://開發商。 android.com/training/displaying-bitmaps/index.html) –

+0

我沒有,它解決了問題。我不知道inJustDecodeBounds – Fallenreaper

回答

1

作爲BitmapFactory.Options opts的一部分,有一個屬性inJustDecodeBounds需要設置爲true來完成該事實。

如果您將其設置爲true,那麼所有代碼​​都可以正常工作。它不是建立在所有的大圖像,而只是返回MIME類型,outheight,outwidth等

更多幫助可以通過將獲得:http://developer.android.com/training/displaying-bitmaps/index.html