안드로이드 개발 질문/답변
(글 수 45,052)
예를 들어
if{
inSampleSize = 2;
}
jpg 파일 400x600 을 decodeResource하여 비트맵 변환후 createScaledBitmap 메서드로 1280x800으로 리사이징 했을때와
1280x800 jpg파일을 그냥 decodeResource로 비트맵으로 변환 했을때
두경우 메모리를 덜 먹는 방법이 있나요 아니면 똑같나여////????????
2013.01.18 09:09:49
먼저 이 질문에는 정답을 달아드리기 힘듭니다.
내부적으로 어떻게 작동하는지 확인이 필요해서요
먼저 비트맵(이미지)을 리소스에서 읽어내는 함수를 사용하면 그 이미지를 펴서 메모리에 적재할겁니다.
(혹은 화면에 최초 1회 뿌리기 전까지는 파일 그대로 가지고 있을 수도 있습니다.)
이미지를 리사이징을 해서 비트맵으로 리턴받으면 ( (리사이징 한 사이즈) X (실 픽셀당 뿌려질 바이트) ) + @만큼
추가로 메모리를 차지하게 됩니다.
이게 경우에 따라서 즉시 변환해두는게 아닐 수도 있고 원본 이미지를 지우면 리사이징한 이미지도 출력 못하게 된다던지
사용하는 함수나 플렛폼 등 여러가지 경우의 수가 나옵니다.
메모리를 모니터링 하는 툴 같은 것을 사용해서 직접 보면서 여러가지 케이스를 테스트 해보시는게 답일 듯 합니다.




그리고 일단 return이 Bitmap이면 해당 비트맵만큼의 메로리를 잡습니다.
그러니 비트맵은 최대한 작게 불러오는 것이 이득입니다