티스토리 뷰
이미지 효율적 처리를 위한 방법 정리합니다. 기본적으로 이미지를 불러오려면, imageView.setDrawable() 혹은 imageView.setBitmap() 이러한 방식으로 jpeg, png 파일들을 불러와서 사용할 수 있습니다. 하지만 이런 방식들을 사용하다보면 이미지가 너무 큰 경우, 혹은 이미지가 너무 고화질인 경우에 out of Memory 문제가 발생할 수 있습니다.
그래서 이미지 효율적으로 처리하기 위한 방식 3가지를 정리하려고 합니다.
1. 이미지 해상도별 별도의 폴더로 관리하기
위의 폴더와 같이 hdpi, mhdpi, xhdpi, xxhdpi 와 같이 같은 이미지라도 해상도를 분류하여 저장할 수 있습니다. 위와 같은 방법이 효율적인 이유를 설명드리겠습니다.
안드로이드에서 이미지를 찾을 때, drawable 폴더에 가서 우선 이미지를 찾은 후에 화질별 폴더에서 이미지를 찾으로 가는 방식입니다. 그렇기 때문에 사양이 좋지 않은 기기에서 큰 이미지를 불러 와야 하는 경우, 저화질 이미지 폴더에 이미지를 넣으면 좀더 작은 크기의 이미지를 가져올 수 있습니다.
2. 이미지 처리 라이브러리 사용하기
요즘에는 이미지 처리에 유용한 라이브러리가 많습니다. Glide, Picasso 등 찾아보시면 많이 있습니다. 각각 라이브러리마다 지원하는 기능들이 조금씩 다르니 원하는 기능을 지원하는 라이브러리를 사용하면 좋을 거 같습니다. (참고 : Glide 라이브러리 정리한 글이 있으니 참고해주세요 )
제가 라이브러리를 추천하는 이유는 많은 시간을 직접 쓸 필요가 없이 빠른 시간내의 메모리 문제나 이미지 변형 문제등을 해결해 줍니다. 그렇기 때문에 개발 생산성을 높일 수 있습니다.
3. Manifest의 LargeHeap 설정 변경하기
안드로이드 Manifest 파일에서 해당 설정(largeHeap)을 true로 설정하면, 해당 앱이 휴대폰에서 좀더 많은 메모리를 사용할 수 있습니다. 하지만 엄청 추천하지 않습니다. 왠만하면 저 설정을 사용하지 않고 메모리를 효율적으로 사용하게 코드를 짜는 것이 중요합니다.
그리고 안드로이드 공식문서에서도 이렇게 설명하고 있습니다.
대부분의 앱에서는 이 속성이 필요하지 않으며 대신 성능 개선을 위해 전체 메모리 사용량을 줄이는 데 초점을 맞춰야 합니다. 또한 이 속성을 사용 설정하는 경우 가용 메모리가 고정적으로 증가될 것이 보장되지 않습니다. 왜냐하면 일부 기기는 총 가용 메모리의 제약을 받기 때문입니다.
그러니 해당 옵션을 사용할 때에는 이런 점을 숙지해야 합니다.
감사합니다.
'Android' 카테고리의 다른 글
[안드로이드/Android] Coroutine, Thread - 차이와 특징 (0) | 2020.11.15 |
---|---|
[안드로이드/Android] TextInputLayout - 속성변경(밑줄 색, 커서 색, 메세지 등) (0) | 2020.11.07 |
[Android] 안드로이드 이미지 처리를 위한 Glide 라이브러리 정리 (0) | 2020.03.31 |
[Android] 안드로이드 서비스(Service) 정의 및 구현 방법 정리 (0) | 2020.03.30 |
[Android] 안드로이드 네이밍/변수명 규칙 정하기 (0) | 2020.03.29 |
- Total
- Today
- Yesterday
- Swift데이터타입
- codingtest
- 개발공부
- 인증토큰
- github
- 인드로이드4대컴포넌트
- ios
- 블로그관리하기
- 밀리세컨
- 밑줄색
- 서비스선언
- git
- 안드로이드공부
- CI/CD
- swift
- 구글서치콘솔
- IT
- 네이버웹마스터
- 사이트맵등록방법
- 안드로이드
- 코드스타일
- AUTH0
- TextInputEditText
- 티스토리블로그광고
- underline color
- 4대컴포넌트
- Android
- Swift기초자료
- 안드로이드개념
- TextInputLayout
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |