1. 製品
  2.   画像
  3.   Swift
  4.   Nuke

Nuke

 
 

画像編集と処理のためのオープンソース Swift ライブラリ

画像パイプラインのカスタマイズ、画像のサイズ変更、カスタム プロセッサの使用、画像の角の丸め、ダウンロード、画像のキャッシュなどを可能にする無料の Swift API。

Nukeは、ソフトウェア開発者が独自のSwiftアプリケーション内で画像を簡単に読み出し表示できるように、非常に便利なオープンソースのSwiftフレームワークです。 アプリ内の画像をダウンロードして表示するコードの1行だけが必要です。 ライブラリには、アプリのパフォーマンスやユーザーエクスペリエンスを劇的に高めることができる、画像の提示やプログレッシブデコードなどのいくつかの高度な機能のサポートも含まれています。

Nuke API は非常に使いやすく、非常に高度なアーキテクチャを備えているため、ソフトウェア開発者は、画像処理とカスタマイズの実質的に無限の可能性を考えることができます。 JPEG、PNG、HEIF などの基本的な画像形式のサポートが組み込まれています。また、Swift コードを使用した画像のエンコードとデコードもサポートしています。

ライブラリは非常に機能が豊富で、スイフトコマンドを使用して画像を処理するための重要な機能がいくつか含まれています。例えば、ロードイメージ、画像のカスタマイズ、画像の回復、ロシアのブラーのようなフィルタの適用、カスタムプロセッサ、ラウンドイメージコーナー、RUメモリキャッシュ、HTTPディスクキャッシュ、攻撃RUディスクキャッシュ、リロードイメージ、画像アニメーション、スマート背景の減圧、ダウンロード再開、要求優先順位付け、低データモードなど。

Previous Next

Nuke を使い始める 

Nuke をインストールするための推奨される方法は、CocoaPods を使用することです。 Podfile に次の行を追加してください

CocoaPods 経由で Nuke をインストールします。

pod "Nuke"
pod "Nuke-Alamofire-Plugin" # optional
pod "Nuke-AnimatedImage-Plugin" # optional

次のコマンドを使用して、最新のソースを複製します。

GitHub 経由で Nuke をインストールします。

$ git https://github.com/kean/Nuke.git 

Swift を使用して画像をダウンロードして使用する

オープン ソースの Nuke API は、Swift アプリ内で画像をダウンロードして使用するための、整理された効果的な方法を提供します。画像を取得するには、必要な画像の URL を渡してから、resume メソッドを呼び出す必要があります。リクエストされた画像をバックグラウンドでダウンロードし、完了したらレスポンス クロージャを通知します。

Swiftアプリ内のさまざまな方法で画像を表示

// Load images directly using Async/Await
func loadImage() async throws {
    let response = try await pipeline.image(for: url, delegate: self)
}
// Use UI components provided by NukeUI mode
struct ContainerView: View {
    var body: some View {
        LazyImage(url: URL(string: "https://example.com/image.jpeg"))
    }
} 

Swift API を使用した Prefect Image

プリフェッチは、ユーザーがイメージやその他のデータを事前にダウンロードして使用できるようにする非常に便利な機能です。アプリはそれをダウンロードして、アプリケーションのネットワーク キャッシュに保存できます。後で画像を表示する必要がある場合、要求に対する応答はネットワークではなくキャッシュから返されます。オープン ソース API Nuke には、Swift コードを使用した画像のプリフェッチと呼ばれるエキサイティングな機能のサポートが含まれています。プリフェッチはユーザーのデータを占有し、メモリだけでなく CPU にも余分な負荷をかける可能性があることに注意してください。このプレッシャーを軽減するために、プリフェッチ先としてディスク キャッシュのみを選択できます。

Swift API を使用した Prefect & Cache GitHub

inal class PrefetchingDemoViewController: UICollectionViewController {
    private let prefetcher = ImagePrefetcher()
    private var photos: [URL] = []
    override func viewDidLoad() {
        super.viewDidLoad()
        collectionView?.isPrefetchingEnabled = true
        collectionView?.prefetchDataSource = self
    }
}
extension PrefetchingDemoViewController: UICollectionViewDataSourcePrefetching {
    func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath]) {
        let urls = indexPaths.map { photos[$0.row] }
        prefetcher.startPrefetching(with: urls)
    }
    func collectionView(_ collectionView: UICollectionView, cancelPrefetchingForItemsAt indexPaths: [IndexPath]) {
        let urls = indexPaths.map { photos[$0.row] }
        prefetcher.stopPrefetching(with: urls)
    }
} 

Swift によるイメージのロードとキャッシュ

イメージ キャッシングは、アプリケーションのパフォーマンスとエンド ユーザー エクスペリエンスを向上させる非常に便利な方法です。オープンソースの Nuke API により、ソフトウェア アプリはダウンロードした画像を自動的にキャッシュできます。 Nuke は、2 つの組み込みキャッシュ レイヤーに依存しています。最初のものは、表示の準備ができている処理済みの画像を保存するために使用されます。 LRU アルゴリズムを使用します。スイープ中に、使用頻度の最も低いエントリが最初に削除されます。 2 つ目の は、HTTP ディスク キャッシュを使用して未処理の画像データを保存します。要求された画像がキャッシュに存在するかどうかを確認することもできます。

Swift API によるメモリまたはディスクキャッシュの Read/Write イメージ

let cache = pipeline.cache
let request = ImageRequest(url: URL(string: "https://example.com/image.jpeg")!)
cache.cachedImage(for: request) // From any cache layer
cache.cachedImage(for: request, caches: [.memory]) // Only memory
cache.cachedImage(for: request, caches: [.disk]) // Only disk (decodes data)
let data = cache.cachedData(for: request)
cache.containsData(for: request) // Fast contains check 
// Stores image in the memory cache and stores an encoded
// image in the disk cache
cache.storeCachedImage(ImageContainer(image: image), for: request)
cache.removeCachedImage(for: request)
cache.removeAll() 
 日本