안녕하세요 오늘은 이미지 로더 라이브러리 중 하나인 Glide에 대해 포스팅 해보겠습니다.
이미지 로더 라이브러리의 종류에는 대표적으로 Picasso, Glide,Fresco, Coil 등 이 있는대 제가 실제로 사용해본 Glide에대 설명해보려고 합니다.
안드로이드에는 여러 개의 이미지 로더 라이브러리가 존재하는대 그 중 하나입니다.
Google에서 만들었으며 부드로운 스크롤에 중점을 둔 빠르고 효율적인 이미지 로딩 라이브러리 입니다.
기본적으로 개발자가 어떠한 라이브러리 없이 이미지를 로드 하려고 하면 고려해야 하는 요소가 굉장이 많이 존재하는데, 이를 third party에게 위임함으로써 부담을 좀 덜 수 잇습니다.
https://github.com/bumptech/glide 에서 각종 문서와 현재 버전에 대해 파악할 수 잇습니다.
모듈 단위의 build.gradle 파일에 추가
repositories {
google()
mavenCentral()
}
dependencies {
implementation 'com.github.bumptech.glide:glide:4.15.1'
}
기본 구현
Glide.with(context)
.load("https://example.com/image.png") //경로
.into(imageView) //이미지를 표시할 뷰
}
이미지 변환
Glide.with(context)
.load("https://example.com/image.png")
.override(600, 200) // 이미지 리사이징
.circleCrop() // 이미지 원형 표시
.into(imageView)
플레이스홀더 및 에러 이미지 구현
Glide.with(context)
.load("https://example.com/image.png")
.placeholder(R.drawable.placeholder) //이미지가 로드되는 동안 표시할 이미지
.error(R.drawable.error) //이미지 로드 실패 시 표시할 이미지
.into(imageView)
디스크 캐시 및 메모리 캐시
Glide.with(context)
.load("https://example.com/image.png")
.diskCacheStrategy(DiskCacheStrategy.ALL) // 이미지 캐싱을 통해 성능 개선
.into(imageView)
GIF 및 비디오 썸네일 로딩
// GIF 로딩
Glide.with(context)
.asGif()
.load("https://example.com/image.gif")
.into(imageView)
// 썸네일
Glide.with(context)
.asBitmap()
.load("https://example.com/video.mp4")
.into(imageView)
위의 코드 처럼 복잡한 구현 없이 간단하게 다양한 기능 구현이 가능한 것이 장점인것 같습니다.
Glide는 이미지뷰의 크기를 측정한 후 원본이미지를 가져와 이미지 뷰 크기에 맞게 리사징 후 비트맵에 그려주는 것이 기본이기 때문에 메모리 효율성도 타 라이브러리에 비해 좋다는 장점이 있습니다.
Gif 지원 기능
메모리 사용 : Glide는 이미지 처리와 캐싱을 위해 메모리를 사용합니다. 너무 많은 이미지를 동시에 로드하거나, 너무나 큰 이미지를 로드하는 경우 앱의 메모리 사용량이 증가하여 성능 저하 또는 OutOfMemory오류를 발생시킬 수 있습니다. -> 이를 위해 적절한 이미지 리사이징과 캐시 전략을 사용해야 합니다.
캐시 무효화 : Glide의 캐시 정책 때문에 캐시 무효화가 복잡합니다. -> 이를 위해 timestamp나 버전정보를 추가하여 고유하게 만들어 해결 하고 있습니다.
현재 사이드 프로젝트로 게시판 기반의 어플리케이션을 제작하고 있는대 Glide 라이브러리를 사용하며 단순하게 이미지 로딩 라이브러리라고만 알았는대 glide 문서도 찾아보니 제가 사용하지 않앗던 다양한 기능들을 확인했습니다. 추가할 내용이나 잘못된 내용 있으면 언제든지 지적 해주세요!