본문 바로가기

Android/Image Loading5

[Android] 이미지 로딩 라이브러리 (Glide vs Picasso / Coil) 안드로이드에서 사용할 수 있는 많은 이미지 로더 라이브러리가 존재한다. 이전 포스팅에서도 언급했듯 개발자가 어떠한 라이브러리 없이 이미지를 로드하려고 한다면 고려해야하는 요소가 많이 존재하게되는데, 이를 third party에게 위임함으로써 걱정을 좀 덜게될 수 있다.대표적인 라이브러리의 종류로는 예전에 많이 쓰이던 AUIL부터 (but he is..👋), 현재에도 쓰이고 있는 Piccaso, Glide, Coil 등이 존재하는데 각각의 라이브러리들은 어떻게 사용하는지, 성능은 어떠한 차이가 있는지 간단하게 적어볼 예정이다. GlideGoogle에서 만든 이미지 로더 라이브러리인 Glide는 빠른 이미지 로딩, 버벅 거림과 끊김 현상이 발생하지 않는다는 점을 강조하고 있다Glide.with(this) .. 2025. 1. 22.
[Android] 이미지 로딩에 대한 고찰 (feat. 메모리 캐시 vs 디스크 캐시) 이미지 로딩은 Android 개발에서 가장 뜨거운 지점입니다. 네트워크로 읽어온 여러 이미지를 동시에 보여 주는 화면은 Android의 전형적인 UI입니다. 그런 화면은 SNS의 최신 글 목록처럼 앱의 핵심 UI인 경우가 많고, 이미지 로딩을 어떻게 구현하느냐에 따라서 사용자 경험의 질이 좌우됩니다. 그러나 이미지를 로딩하는 화면을 안정적으로 빠르게 동작하도록 만들기는 어렵습니다. 캐시, 병렬 처리, 실패 처리 등 개발할 요소가 많습니다. 이 글에서는 Android에서는 어떤 점을 고려해서 이미지 로딩을 구현해야하는지 살펴보겠습니다. 이미지 로딩 과정의 숙제들네트워크를 통한 이미지 로딩을 구현할 때에는 여러 가지 과제를 해결해야 한다.불안한 HTTP 클라이언트 실행 환경원본 이미지는 대부분 HTTP 클라.. 2025. 1. 21.
[Android] 어떻게 이미지 로드를 최적화하면 좋을까?(2) - LRU Cache 내부동작 살펴보자 지난 1편에서는 이미지를 더 낮은 해상도로 서브샘플링을 통해 더 효율적인 연산량과 메모리 사용량을 가져가는 방법에 대해 이야기했었습니다. 지난 포스팅에서도 이야기했다시피, 다운샘플링은 그자체로 상당한 컴퓨팅 자원 절약을할 수 있지만 완벽하게 최적화되진 않습니다. 이전에 로드했던 이미지 혹은 같은 이미지라도 매번 개별적으로 디코드작업을 수행해야하기 때문입니다. 이는 불필요한 컴퓨팅 자원 소비가 될 수 있고, 이미지뷰에 지속적으로 set해주는 작업으로인한 불필요한 메모리 할당이될 수 있습니다. 이를 해결하기 위해서는 이전에 로드했던 이미지(비트맵)는 메모리, 혹은 하드디스크상에 따로 저장해두고, 필요할 때마다 꺼내쓸 필요가 있습니다. 이 방식이 오늘 이야기해볼 Cache라는 기술입니다. 안드로이드에서는 이러.. 2025. 1. 21.
[Android] 어떻게 이미지 로드를 최적화하면 좋을까?(1) - Down Sampling 애플리케이션을 사용하다 보면 수많은 이미지를 접하게 됩니다. 쇼핑몰의 상품 이미지일 수도 있고, SNS의 여러 이미지일 수도 있습니다. 이렇듯 이미지는 현대사회에서 볼 수 있는 가장 보편적인 시각자료중 하나입니다. 그러나 이러한 이미지들을 앱으로 그려주는 작업은 너무나도 무겁습니다. URL 통신으로 ByteArray 형태의 이미지를 불러와서, 디코딩 과정을 거쳐, Canvas에 픽셀 하나하나 찍어 주어야 하니말이죠.또한 일반적으로 이미지들은 기기의 화면 밀도보다 해상도가 훨씬 높습니다. 우리는 BitmapFractory의 decodeXX 메서드를 사용하여 디코딩을 하여 비트맵 객체를 만들게 되는데, 서버에서 내려받은 이미지처럼 크기가 큰 경우 OOM(Out of Memory) 오류가 발생하는 문제 있습니.. 2025. 1. 21.
[Android] 비트맵(Bitmap)이란? 비트맵(Bitmap)은 이미지 관리의 핵심 요소비트맵(Bitmap)은 이미지 관리의 핵심 요소로, 안드로이드에서 이미지를 표현하기 위해 사용되는 객체 입니다.메모리에 만들어지는 모든 이미지는 비트맵 객체로 관리됩니다. 메모리에 로딩된 비트맵 객체를 통해서 이미지를 우리가 원하는대로 조작할 수도 있습니다. 비트맵을 생성하고 관리하기 위해 BitmapFactory 클래스가 제공됩니다. BitmapFactory는 이미지 포맷을 디코딩하여 비트맵으로 변환하는 다양한 함수들을 제공합니다. 이 함수들은 일반적으로 decodeXXX라는 이름으로 되어 있어서 필요한 기능에 맞는 함수를 쉽게 찾을 수 있습니다. 이를 통해 이미지 파일을 비트맵으로 변환하고, 비트맵을 효율적으로 로드하고 메모리에 관리할 수 있습니다. Bi.. 2025. 1. 20.