티스토리 뷰

OpenSource/Kingfisher

# Kingfisher 1.Kingfisher란?

malrang-malrang 2022. 11. 11. 17:22

Kingfisher 1.Kingfisher란?


Kingfisher.Github

Kingfisher란?

Kingfishersms 이미지 캐싱을 쉽게하고, task관리도 해주는 라이브러리다.

CocoaPods, SPM(Swift Package Manager), Carthage 모두 지원하며 원하는 방식을 사용해 import할수 있다.

이미지 캐싱이란?

캐시(Cache)컴퓨터과학 에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다.
캐시는 데이터에 접근하거나 값을 계산하는 시간이 오래걸릴 경우 시간을 절약하고 싶은 경우에 사용할수있다.
캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.

앱에서 이미지 캐싱을 활용하게 된다면 매번 서버에서 이미지를 받아오기에는 시간이 오래 걸리니 임시적인 장소(캐시)에 저장해놨다가, 필요할 때 꺼내서 사용하여(로컬 스토리지) 서버와 통신하는 비용을 줄일 수 있게 된다.

Kingfisher의 특징

1. Asynchronous image downloading and caching.
: 비동기적 이미지 다운로드및 캐싱

2. Loading image from either URLSession-based networking or local provided data.
: URLSession 기반 네트워킹 또는 local에서 제공된 데이터로부터 이미지 로드.

3. Useful image processors and filters provided.
: 유용한 이미지 프로세서와 필터를 제공.

4. Multiple-layer hybrid cache for both memory and disk.
: 메모리와 디스크 모두를 위한 다중 계층 하이브리드 캐시 제공.

5. Fine control on cache behavior. Customizable expiration date and size limit.
: 캐시 동작에 대한 제어.(만료일, 크기를 제한 할 수 있다.)

6. Cancelable downloading and auto-reusing previous downloaded content to improve performance.
: 이미지를 다운로드 하는중에 취소할 수 있고, 이전에 다운로드 되었던 컨텐츠를 자동으로 재사용하여 성능을 향상시킨다.

7. Independent components. Use the downloader, caching system, and image processors separately as you need.
: 필요에따라 다운로더, 캐싱시스템, 이미지프로세서를 별도로 사용할수있다.(만들어서 주입시켜 사용할 수 있다.)

8. Prefetching images and showing them from the cache to boost your app.
:캐시에서 이미지를 미리가져와 보여줌으로써 앱의 성능을 향상시켜준다.

9. Extensions for UIImageView, NSImageView, NSButton, UIButton, NSTextAttachment, WKInterfaceImage, TVMonogramView and CPListItem to directly set an image from a URL.
: URL에서 이미지를 바로 할당하기 위해 UIImageView, NSImageView, NSButton, UIButton, NSTextAttachment, WKInterfaceImage, TVMonogramView 및 CPListItem 를 확장하여 사용한다.

10. Built-in transition animation when setting images.
: 이미지 설정시 내부에 구현된 애니메이션을 사용할 수 있다.

11. Customizable placeholder and indicator while loading images.
:이미지를 로딩하는 동안 커스터 마이즈 할 수 있는 placeholder와 indicator를 사용할 수 있다.

12. Extensible image processing and image format easily.
: 이미지처리( image processing)와 이미지형식(image format)을 쉽게 확장 할 수 있다.

13. Low Data Mode support.
: Low Data 모드를 지원합니다.****

14. SwiftUI support.
: SwiftUI를 지원합니다.

Kingfisher 샘플코드

UIKit

import Kingfisher

let url = URL(string: "https://example.com/image.png")
imageView.kf.setImage(with: url)

SwiftUI

var body: some View {
    KFImage(URL(string: "https://example.com/image.png")!)
}

위의 코드는 Kingfisher에서 제공하는 샘플코드로 다음과 같은 동작들로 이미지캐싱, 다운로드 및 이미지 할당 작업을 하게된다.

  1. url.absoluteString을 Key로 이전에 동일한 Key로 저장된 이미지가 있는지 확인한다.
  2. cache에서 이미지를 찾게되면 imageView.image에 cache에 저장되었던 이미지를 할당해준다.
  3. cache에 이미지가 없다면 url을 request요청하여 이미지를 다운로드한다.
  4. 다운로드된 데이터를 UIImage객체로 변환한다.
  5. cache에 이미지를 저장한다.
  6. imageView.image에 요청한 UIImage객체로변환된 이미지를 할당한다.

참고자료및 문서

Kingfisher.Github
https://1consumption.github.io/posts/about-kingfisher(1)/

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
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
글 보관함