본문 바로가기
Development/Android

[안드로이드] 이미지 로딩의 흐름 및 관련 라이브러리 정리

by 푸민 2015. 9. 7.
반응형



안녕하세요 푸민입니다.

안드로이드 이미지 처리에는 주의해야할 것이 있고 또 이미지를 불러오는 흐름이 있습니다. 또한 그런 프로세스들을 잘 정리하여 개발자들이 편리하게 사용할 수 있도록 라이브러리를 제공해주는 곳도 많이 있습니다! 한번 알아볼까요?


 이미지 로딩의 각 단계 

1. 이미지 전처리

- 이미지를 로딩하기 전에 썸네일이나 진행 상황을 보여 주기 위한 단계


2. 이미지 로딩

- 캐시나 네트워크에서 이미지를 가져오는 단계


3. 디코딩

- BitmapFactory 를 이용해서 이미지를 비트맵 형식으로 변환하고 크기, 회전, 품질 등을 변환하는 단계


4. 이미지 후처리

- 보여줄 이미지에 애니메이션이나 모서리를 둥글게 하는 등의 효과를 적용하는 단계


5. 보여주기

- UI Thread에서 이미지를 보여주는 단계



 이미지 로딩 워크플로우 


 이미지 로딩과정의 문제점 

1. 불안정한 HTTP 클라이언트 실행환경

- 안드로이드는 PC와 다르게 네트워크가 불안정합니다. 그래서 외부 이미지 요청시에 연결이 안될수도 있고, 또 다운을 받는도중에 문제가 생길수도 있습니다.


2. 메모리가 넘치거나 세기 쉬운 비트맵 디코딩

- 이미지 크기가 크면 클수록 디바이스의 메모리를 많이 사용하기 때문에 Out Of Memory 에러가 발생하기 쉽습니다. 특히나 디코딩 중 에러 발생에 대한 처리가 필요합니다.


3. 충분하지 않은 병렬 처리

- 네트워크를 사용할 때 AsyncTask 클래스를 사용하면 하나의 스레드 풀만 사용하기 때문에. 하나의 이미지를 다운받을때 병렬처리가 불가능합니다.


4. 이미지 캐시와 View 재활용의 어려움

- 이미지 작업시 캐싱은 필수인데에 비해 많은 작업량이 필요하고, 사이에 변수들 또한 많습니다.



위와 같은 문제점들을 해결하고자 많은 Open API가 있는데, 소개를 해드리겠습니다!


 이미지 로딩 라이브러리 

1. Android Universal Image Loader

- 타 라이브러리에 비해 성능이 좋습니다! 기존 이미지 로딩 문제의 대부분을 잘 해결하고 구현이 잘되어 있어 사용자가 별로 커스터마이징을 하지 않아도 좋은 성능을 기대할 수 있습니다.


2. Volley

- Google에서 직접 만들었기 때문에 추후에 안드로이드 SDK에 포함될 가능성이 있습니다. 성능과 안정성 모두 신뢰가 되고, 구조가 직관적이고 확장성이 매우 높습니다.


3. Picasso

- 제가 자주 애용하는 이미지 라이브러리인데요. 가볍게 사용하기 좋고, 매우 쉽고 편합니다. 체인 문법을 사용하여 한줄로 이미지 로딩을 처리할 수 있습니다. 사용자의 의지에 따라 커스텀하여 사용하셔도 괜찮습니다. Volley 기반으로 만들어졌기에 안정성면에서도 우수합니다.


4. A Query

- Picasso와 같은 체인문법이지만 사용하기에 사용은 편합니다. 하지만 확장성이 부족하여 원하는 기능을 적용하거나 개선하기에는 조금 힘듭니다. 그래도 막강한 유틸리티 기능이 있습니다.


5. Novoda's

- 기본적인 기능은 다 있지만 별다른 장점이 없습니다.


6. driod4me

- 기본 구현이 부족하여 사용자가 직접 구형해야합니다. 어렵습니다.


7. Libs for Android

- 매우 가볍지만 그에 맞게 기능이 많이 부족합니다.


반응형

댓글