본문 바로가기
Android

[Glide] 이미지 로딩 시 자동으로 이루어지는 다운 샘플링

by 박새영 2022. 8. 10.

다운 샘플링?

: 비트맵(이미지)을 이미지의 본래 크기가 아닌, 뷰에서 실제로 필요로 하는 작은 크기로 조정하는 것

 

Glide를 통해 이미지뷰에 이미지를 로드하면 자동으로 이미지뷰에 맞춘 다운 샘플링이 이루어집니다.

 

Glide에서 파라미터로 이미지뷰를 받기 때문에, 이미지뷰의 크기를 알 수 있어 가능합니다.

 

다운 샘플링은 Glide에서 이미지 파일(JPEG, PNG)을 디코딩해서 비트맵으로 만들 때, 이미지 파일의 본래 크기가 아닌 이미지뷰의 크기에 맞춰 비트맵을 생성하는 것으로 이루어집니다.

 

비트맵이 차지하는 메모리의 용량은 이미지의 크기에 비례하는데,

 

그래서 이미지의 크기가 크다면, 이미지의 용량과는 상관없이 이미지의 크기만큼 메모리를 필요로합니다.

 

하지만 대부분의 모바일 기기는 손바닥만한데, 보여줘야할 이미지 리스트가 많은 경우가 대부분이므로, 이미지 크기를 모바일 기기에 맞춰 보여준다면, 이미지를 보여주는데 더 적은 메모리를 사용할 수 있습니다.

 

 

하지만 예외로, 이미지뷰의 크기가 wrap_content라면 이미지의 크기 그대로 비트맵을 생성합니다.

 

 

override()

이미지뷰가 생성되기 전에 이미지를 로딩해야해서 이미지뷰의 크기를 알 수 없는경우, 

 

또는 크기가 match_parent나 0dp 라서 이미지뷰가 측정이 되고 나서 크기를 알 수 있고, 고해상도 기기를 고려할때, 다운 샘플링에 기댈수 없는 경우 override로 생성할 비트맵의 크기를 지정해줄 수 있습니다.

 

또는 이미지뷰 크기가 아니라 더 작게 비트맵을 생성하고 싶은 경우에도 사용할 수 있겠습니다.

'Android' 카테고리의 다른 글

안드로이드 신입 과제 면접 회고  (0) 2023.05.06
인텐트 필터 작성하고 테스트해보기  (0) 2021.11.27
Android Task  (0) 2021.11.14
Android MVP 아키텍처  (0) 2021.10.30
Activity의 생명주기, Life Cycle  (0) 2020.04.02