안드로이드

[Android] 이미지 로딩 라이브러리 - Coil

코딩하는후운 2021. 5. 17. 17:21
반응형

Coil은 Coroutine Image Loader의 약자이며 Kotlin Coroutines(코루틴)으로 만들어진 가벼운 Android 백앤드 이미지 로딩 라이브러리입니다.

 

코루틴자체가 내장이 되어 있어 코루틴 라이브러리를 별도로 설치하지 않아도 되는 장점이 있습니다.

 

장점

  • Glide, Fresco보다 상대적으로 가볍다.

  • 코루틴이 기본이지만 메인까지는 아니며 심플함과 최소한의 보일러 플레이트(boilerplate)를 위하여 Kotlin의 기능을 활용하여 Kotlin을 잘 다룬다면 사용하기가 매우 쉽다.

  • 메모리와 디스크의 캐싱, 메모리의 이미지 다운 샘플링, Bitmap 재사용, 일시정지/취소의 자동화 등등 수 많은 최적화 작업을 수행하므로 처리 속도가 굉장히 빠릅니다.

  • 다이나믹 이미지 샘플링을 지원하며 이는 Coil에서 자동으로 알아서 처리됩니다.

  • Coil의 이미지 파이프라인(PipeLine)은 크게 세 가지로 구성됩니다.
    Mappers, Fetchers, Decoders 이러한 인터페이스를 사용하여 기본 이미지 로딩 기능을 강화하거나 재정의하고 Coil에 새로운 파일 형식에 대한 지원을 추가할 수 있습니다.

  • Kotlin으로 개발 되었으며 Coroutines, OkHttp, Okio, AndroidX Lifecycles등의 최신 라이브러리를 사용합니다.

 

단점

  • 버전이 아직 정식버전이라고는 할 수 없어서 신뢰성이 낮아 실무에서 사용하는 기업이 많이 없다.
  • 최소 Android SDK 버전 14부터 지원을 하나 최신버전에서 사용을 하는 것을 권장함.(AndroidX)
  • Kotlin을 모른다면 사용하기 어렵다.
  • 일부 기능 사용을 위해 Coroutines이 무엇인지 개념적으로 어느정도 알아야 한다.

프로젝트에 적용하기

1. 먼저 gradle에 Coil을 추가합니다.

: implementation("io.coil-kt:coil:0.10.0")

 

2. ImageView로 이미지를 로딩하기 위해, Coil의 load 메서드를 사용합니다.

// 각 방식은 아래와 같습니다.

// URL

imageView.load("https://www.example.com/image.jpg")

// Resource

imageView.load(R.drawable.image)

// File

imageView.load(File("/path/to/image.jpg"))

 

3. 추가로 이미지 핸들링을 하려면 trailing lambda 식을 이용하여 아래와 같이 추가 설정을 할 수 있습니다.

// CircleCrop(이미지 원형으로 자르기) 예시

imageView.load("https://www.example.com/image.jpg") {

    crossfade(true)

    placeholder(R.drawable.image)

    transformations(CircleCropTransformation())

}

 

4가지의 Image Transformations을 제공합니다.

  • BlurTransformation
    이미지를 흐릿하게 보이기하는 가우시안 블러(Gaussian Blur)를 적용합니다.
  • CircleCropTransformation
    이미지의 중심을 기준으로 원형으로 이미지를 자릅니다. (예. 카카톡의 원형 프로필 이미지)
  • GrayscaleTransformation
    그레이스케일로 음영처리를 적용합니다.
  • RoundedCornersTransformation
    사이즈에 맞도록 이미지를 자르고 이미지 모서리를 둥글게 라운드를 적용합니다.

 

이미지 로더 라이브러리 메모리 사용량 비교(Glide vs Picasso vs Coil)

https://jizard.tistory.com/224

 

[안드로이드] 주요 이미지 라이브러리 메모리 사용량 비교해보기! (Glide vs Picasso vs Coil)

안드로이드에서 Glide, Picasso, Coil 등 선택할 수 있는 이미지 라이브러리(Image library)의 폭은 넓다. 뭐 대부분 그냥 닥치고 글라이드! 하긴하지만, 메모리 관리 측면에서 누가 젤 잘하는지 항상 속으

jizard.tistory.com

 

Picasso와 Glide 비교분석

https://gun0912.tistory.com/19

 

[안드로이드/Android]Picasso와 Glide 비교분석

이전에 포스트 내용으로 이미지로딩 라이브러리와 Glide에 관하여 소개해드렸었습니다. 이미지로딩 라이브러리 및 Glide소개 보기 이번에는 요즘 제일 많이 쓰이고 있고 레퍼런스가 많은 Picasso와

gun0912.tistory.com

 

 

참조 :

https://velog.io/@jojo_devstory/Android-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%A1%9C%EB%94%A9-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-Coil-%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90

https://jizard.tistory.com/224

https://gun0912.tistory.com/19

 

반응형

'안드로이드' 카테고리의 다른 글

Android Clean Architecture란?  (0) 2021.05.27
SAF(Storage Access Framework)  (0) 2021.05.25
Storage Scope  (0) 2021.05.14
ViewBinding  (0) 2021.05.13
Kotlin apply, with, let, also, run 사용?  (0) 2021.05.11