Nuke
Atvirojo kodo „Swift“ biblioteka, skirta vaizdo redagavimui ir apdorojimui
Nemokama „Swift“ API, leidžianti tinkinti vaizdų srautą, keisti vaizdų dydį, naudoti tinkintą procesorių, suapvalinti vaizdo kampus, atsisiųsti ir išgryninti vaizdus ir pan.
„Nuke“ yra labai naudinga atvirojo kodo „Swift“ sistema, leidžianti programinės įrangos kūrėjams lengvai įkelti ir rodyti vaizdus savo „Swift“ programose. Norint atsisiųsti ir rodyti vaizdus programose, reikia tik vienos kodo eilutės. Bibliotekoje taip pat yra palaikymas kelioms pažangioms funkcijoms, tokioms kaip vaizdo išankstinis pašildymas ir laipsniškas dekodavimas, kurios gali žymiai pagerinti programos našumą ir vartotojo patirtį.
„Nuke API“ yra labai paprasta naudoti ir turi labai pažangią architektūrą, kuri leidžia programinės įrangos kūrėjams galvoti apie praktiškai neribotas vaizdo apdorojimo ir pritaikymo galimybes. Jame yra integruotas pagrindinių vaizdo formatų, tokių kaip JPEG, PNG, HEIF ir daugelis kitų, palaikymas. Jis taip pat palaiko vaizdo kodavimą ir dekodavimą naudojant „Swift“ kodą.
Bibliotekoje yra labai daug funkcijų ir joje yra keletas svarbių funkcijų, skirtų vaizdams tvarkyti naudojant „Swift“ komandas, pvz., įkelti vaizdus, tinkinti vaizdo vamzdyną, keisti vaizdų dydį, taikyti filtrus, pvz., Gauso suliejimą, naudoti tinkintą procesorių, apvalius vaizdo kampus, LRU atmintį. Talpykla, HTTP disko talpykla, agresyvi LRU disko talpykla, vaizdų įkėlimas iš naujo, vaizdo animacija, išmanusis fono išglaudinimas, atsisiuntimų atnaujinimas, užklausa dėl prioritetų nustatymo, mažai duomenų režimas ir daug daugiau.
Darbo su Nuke pradžia
Rekomenduojamas Nuke diegimo būdas yra CocoaPods. Į savo Podfile pridėkite šias eilutes
Įdiekite „Nuke“ per „CocoaPods“.
pod "Nuke"
pod "Nuke-Alamofire-Plugin" # optional
pod "Nuke-AnimatedImage-Plugin" # optional
Klonuokite naujausius šaltinius naudodami šią komandą.
Įdiekite „Nuke“ per „GitHub“.
$ git https://github.com/kean/Nuke.git
Atsisiųskite ir naudokite vaizdus naudodami „Swift“.
Atvirojo kodo „Nuke“ API yra gerai organizuotas ir efektyvus būdas atsisiųsti ir naudoti vaizdus „Swift“ programose. Norėdami gauti vaizdus, reikia perduoti reikiamo vaizdo URL ir iškviesti atnaujinimo metodą. Jis atsisiųs prašomą vaizdą fone ir informuos atsakymą, kai tai bus atlikta.
Peržiūrėkite vaizdus įvairiais būdais „Swift“ programose
// 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"))
}
}
Iš anksto gaukite vaizdą naudodami „Swift“ API
Išankstinis gavimas yra labai naudinga funkcija, leidžianti vartotojams iš anksto atsisiųsti vaizdą ar kitus duomenis, tikintis, kad jie bus naudojami. Programos gali ją atsisiųsti ir išsaugoti programos tinklo talpykloje. Vėliau, kai reikės peržiūrėti vaizdą, atsakymas į jūsų užklausą grįš iš talpyklos, o ne iš tinklo. Atvirojo kodo API Nuke palaiko įdomią funkciją, žinomą kaip išankstinis vaizdų gavimas naudojant Swift kodą. Atminkite, kad išankstinis gavimas gali užimti vartotojų duomenis ir papildomai apkrauti centrinį procesorių bei atmintį. Norėdami sumažinti šį spaudimą, kaip išankstinio gavimo paskirties vietą galite pasirinkti tik disko talpyklą.
Iš anksto iškvieskite ir saugokite „GitHub“ naudodami „Swift“ API
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)
}
}
Įkelkite ir išgryninkite vaizdus per „Swift“.
Vaizdų kaupimas talpykloje yra labai naudingas metodas, pagerinantis programos našumą ir galutinio vartotojo patirtį. Atvirojo kodo Nuke API leidžia programinės įrangos programoms automatiškai talpinti atsisiųstus vaizdus. Nuke remiasi dviem integruotais talpyklos sluoksniais. Pirmasis naudojamas apdorotam vaizdui saugoti, kuris yra paruoštas rodyti. Naudojamas LRU algoritmas – išvalymo metu pirmiausia pašalinami rečiausiai naudoti įrašai. Antrasisnd naudoja HTTP disko talpyklą neapdorotiems vaizdo duomenims saugoti. Taip pat galima patikrinti, ar talpykloje yra prašomas vaizdas.
Skaitykite / rašykite vaizdus atmintyje arba disko talpykloje naudodami „Swift API“.
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()