본문 바로가기

프로그래밍/Android

[Android] BitmapFactory사용시에 Bitmap size exceeds VM budget 발생 문제 해결 방법


우선 Bitmap size exceeds VM budget가 발생되는 이유는 여러가지가 있을 수 있다.

지금 내가 문제가 되는 상황은 bitmap을 불러오면서 메모리가 부족해서 발생되는 문제다.


해당 문제를 해결하기 위해서는 BitmapFactory.Option 이라는 class를 사용해서 몇가지 옵션만 주면 된다.

우선 이미지를 불러오는 코드 부터 보자.

보통 이미지를 불러 올경우에 아래와 같은 방법으로 불러온다.

예를 들기 위해서 2가지로 적어봤다.

1.
Bitmap img = BitmapFactory.decodeResource(res, res.getIdentifier(fileName, null, null));

2.
Bitmap img = BitmapFactory.decodeByteArray(byteImg, offset, length);


위와 같은 코드에서 BitmapFactory.Option을 사용해서 처리 하는 방법을 보자.

1.
BitmapFactory.Option option = new BitmapFactory.Option();
option.inPurgeable = true;       // 메모리를 줄여주는 옵션
option.inDither = true;             // 이미지를 깔끔하게 처리해서 보여주는 옵션

Bitmap img = BitmapFactory.decodeResource(res, res.getIdentifier(fileName, null, null), option); 

2. 
BitmapFactory.Option option = new BitmapFactory.Option();
option.inPurgeable = true;       // 메모리를 줄여주는 옵션
option.inDither = true;             // 이미지를 깔끔하게 처리해서 보여주는 옵션 

Bitmap img = BitmapFactory.decodeByteArray(byteImg, offset, length, option); 

위와 같이 bitmap을 불러올때 BitmapFactory.Option을 셋팅 해주면 된다.

더 자세한 사항이나 좀 더 궁금증이 생긴다면 아래의 사이트로 가보면 된다.

http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html

'프로그래밍 > Android' 카테고리의 다른 글

[Android] 콘솔창에서 LogCat 확인하기  (0) 2011.05.23