Kingfisher
画像をダウンロードしてキャッシュするための無料の Swift ライブラリ
ソフトウェア開発者がウェブアプリ内でリモート画像を操作できるようにするオープンソースの Swift API。画像のダウンロードとキャッシュ、画像プロセッサとフィルタの適用が可能です。
Kingfisherは、Swiftコードを使用して複数の画像ファイルフォーマットで動作するための完全な機能を提供した、軽量で純粋なSwift実装です。 ライブラリは、開発者が画像をリモートで処理できるアプリケーションを簡単に作成するのに役立ちます。 ライブラリ非同期のダウンロードだけでなく、独自のアプリケーション内で画像をキャッシュします。 ライブラリは、アプリのパフォーマンスを著しく高めるダウンロードした画像の複数のレイヤーキャッシュをサポートしています。 つまり、画像はメモリだけでなく、ディスク上にキャッシュされるので、再度ダウンロードする必要はありません。
ライブラリは非常に扱いやすく、キャッシュ管理の機能を提供します。ユーザーは、キャッシュのサイズと期間を簡単に設定できます。また、ライブラリがリソースを過剰に使用するのを防ぐのに役立つ自動キャッシュ クリーニング機能も提供します。タスクのキャンセルには、もう 1 つの優れた機能が含まれています。必要がなくなった場合、ユーザーはダウンロードまたは画像取得プロセスを簡単にキャンセルできます。
Kingfisherライブラリは、開発者がニーズに応じて画像のダウンロードと画像キャッシュコンポーネントを別々に使用できるようにします。 Swift コードを使用して独自のニーズに合わせて独自のキャッシュを作成することもできます。 不要なディスク操作を避けてディスクキャッシュ性能を改善しました。 ライブラリはオープンソースであり、ITライセンスの下で利用できます。
キングフィッシャーを始めよう
次のコマンドを使用して最新のソースを複製します
GitHub 経由で Kingfisher をインストールします。
$ git submodule add https://github.com/onevcat/Kingfisher.git
Swiftライブラリによるダウンロードとキャッシュイメージ
プログラミング的にイメージをダウンロードし、URLを使ってキャッシュに保存するのは非常に難しい作業です。 オープンソースのSwiftライブラリのKingfisherは、ソフトウェア開発者が自分のアプリケーション内で画像を効率的にダウンロードしてキャッシュするのを簡単にします。 ライブラリは、メモリとディスクの両方のキャッシュイメージをサポートしています。 デフォルトでは、使用するAMの量は限られず、ユーザーは値自体を設定できます。
Swiftライブラリによるダウンロードとキャッシュイメージ
let urls = ["https://example.com/image1.jpg", "https://example.com/image2.jpg"]
.map { URL(string: $0)! }
let prefetcher = ImagePrefetcher(urls: urls) {
skippedResources, failedResources, completedResources in
print("These resources are prefetched: \(completedResources)")
}
prefetcher.start()
// Later when you need to display these images:
imageView.kf.setImage(with: urls[0])
anotherImageView.kf.setImage(with: urls[1])
Swiftアプリ内のイメージビュー
Kingfisher ライブラリを使用すると、ソフトウェア プログラマーはアプリケーション内に画像表示機能を簡単に組み込むことができます。画像ビューを設定する最も簡単な方法は、UIImageView 拡張機能を使用することです。ライブラリは URL から画像をダウンロードし、メモリ キャッシュとディスク キャッシュの両方に導き、imageView に表示します。後者のユーザーが同じ URL を呼び出すと、キャッシュから画像がすぐに取得されて表示されます。また、ダウンロード画像のフェード、プレースホルダーの表示、角丸画像など、画像に関連するいくつかの機能もサポートしています。
Swiftアプリ内の画像を見る
import Kingfisher
let url = URL(string: "https://example.com/image.png")
imageView.kf.setImage(with: url)
手動でキャッシュイメージを保存または削除する
オープンソースのSwiftライブラリのKingfisherにより、プログラマが保存したり、キャッシュから画像を簡単に削除したりすることができます。 デフォルトでは、取得されたイメージをキャッシュに自動的に保存するために、拡張子メソッドを表示することができます。 しかし、cache.store() メソッドで手動で実行できます。 また、ライブラリが保存されるべきフォーマットを決定するのに役立つ画像の元のデータを渡すこともできます。 また、特定の画像をキャッシュから手動で削除するためのサポートも提供しています。 また、すべてのキャッシュデータを消去したり、ディスクストレージのサイズを報告したり、キャッシュを作成したりすることもできます。
Swiftアプリ内の画像を見る
//Check whether an image in the cache
let cache = ImageCache.default
let cached = cache.isCached(forKey: cacheKey)
// To know where the cached image is:
let cacheType = cache.imageCachedType(forKey: cacheKey)
// `.memory`, `.disk` or `.none`.
// Store Image in the cache
let processor = RoundCornerImageProcessor(cornerRadius: 20)
imageView.kf.setImage(with: url, options: [.processor(processor)])
// Later
cache.isCached(forKey: cacheKey, processorIdentifier: processor.identifier)
// Retrieve image from cache
cache.retrieveImage(forKey: "cacheKey") { result in
switch result {
case .success(let value):
print(value.cacheType)
// If the `cacheType is `.none`, `image` will be `nil`.
print(value.image)
case .failure(let error):
print(error)
}
}