Nuke
کتابخانه سوئیفت منبع باز برای ویرایش و پردازش تصویر
Swift API رایگان که به سفارشیسازی خط لوله تصویر، تغییر اندازه تصاویر، استفاده از پردازنده سفارشی، گوشههای تصویر گرد، دانلود، و تصاویر نقدی و غیره اجازه میدهد.
Nuke یک چارچوب سوئیفت منبع باز بسیار مفید است که توسعه دهندگان نرم افزار را قادر می سازد تا به راحتی تصاویر را در برنامه های Swift خود بارگذاری و نمایش دهند. برای دانلود و نمایش تصاویر در برنامه های شما فقط به یک خط کد نیاز دارد. این کتابخانه همچنین از چندین ویژگی پیشرفته مانند پیش گرم کردن تصویر و رمزگشایی پیشرونده پشتیبانی می کند که می تواند عملکرد برنامه و همچنین تجربه کاربر را به طرز چشمگیری افزایش دهد.
Nuke API بسیار آسان برای استفاده است و دارای معماری بسیار پیشرفته ای است که توسعه دهندگان نرم افزار را قادر می سازد تا به امکانات تقریبا نامحدودی برای پردازش و سفارشی سازی تصویر فکر کنند. این شامل پشتیبانی داخلی از فرمت های تصویر اولیه مانند JPEG، PNG، HEIF، و بسیاری دیگر است. همچنین از رمزگذاری و رمزگشایی تصویر با استفاده از کد سوئیفت پشتیبانی می کند.
این کتابخانه دارای ویژگیهای بسیار غنی است و چندین ویژگی مهم برای مدیریت تصاویر با استفاده از دستورات سوئیفت، مانند بارگذاری تصاویر، سفارشیسازی خط لوله تصویر، تغییر اندازه تصاویر، اعمال فیلترهایی مانند تاری گاوسی، استفاده از یک پردازنده سفارشی، گوشههای تصویر گرد، حافظه LRU را شامل میشود. حافظه پنهان، حافظه پنهان دیسک HTTP، حافظه پنهان دیسک تهاجمی LRU، بارگیری مجدد تصاویر، انیمیشن تصویر، فشرده سازی پس زمینه هوشمند، از سرگیری دانلودها، اولویت بندی درخواست، حالت داده کم و بسیاری موارد دیگر.
شروع کار با Nuke
روش توصیه شده برای نصب Nuke استفاده از CocoaPods است. لطفا خطوط زیر را به پادفایل خود اضافه کنید
Nuke را از طریق CocoaPods نصب کنید.
pod "Nuke"
pod "Nuke-Alamofire-Plugin" # optional
pod "Nuke-AnimatedImage-Plugin" # optional
با استفاده از دستور زیر آخرین منابع را کلون کنید.
Nuke را از طریق GitHub نصب کنید.
$ git https://github.com/kean/Nuke.git
دانلود و استفاده از تصاویر با استفاده از Swift
API منبع باز Nuke روشی منظم و موثر برای دانلود و استفاده از تصاویر در داخل برنامه های سوئیفت شما ارائه می دهد. برای واکشی تصاویر باید URL تصویر مورد نیاز را ارسال کنید و سپس روش رزومه را فراخوانی کنید. تصویر درخواستی را در پسزمینه دانلود میکند و پس از اتمام کار، بسته شدن پاسخ را اعلام میکند.
تصاویر را به روشهای مختلف در داخل برنامههای 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
واکشی اولیه یک ویژگی بسیار مفید است که کاربران را قادر میسازد تا تصویر یا سایر دادهها را قبل از استفاده از آن دانلود کنند. برنامه ها می توانند آن را دانلود کرده و در کش شبکه برنامه ذخیره کنند. بعداً هنگامی که نیاز به مشاهده تصویر دارید، پاسخ به درخواست شما به جای شبکه از حافظه پنهان باز می گردد. API Nuke منبع باز شامل پشتیبانی از یک ویژگی هیجان انگیز به نام Prefetching images با استفاده از کد سوئیفت است. لطفاً به یاد داشته باشید که Prefetching میتواند دادههای کاربران را گرفته و فشار بیشتری بر CPU و حافظه وارد کند. برای کاهش این فشار میتوانید فقط حافظه پنهان دیسک را به عنوان مقصد واکشی اولیه انتخاب کنید.
GitHub از قبل واکشی و کش با استفاده از 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)
}
}
بارگیری و پول نقد تصاویر از طریق سوئیفت
ذخیره تصویر یک روش بسیار مفید است که عملکرد برنامه و تجربه کاربر نهایی را بهبود می بخشد. API منبع باز Nuke به برنامه های نرم افزاری این امکان را می دهد که به طور خودکار تصاویر دانلود شده را ذخیره کنند. Nuke بر دو لایه کش داخلی متکی است. اولین مورد برای ذخیره تصویر پردازش شده استفاده می شود که برای نمایش آماده است. از الگوریتم LRU استفاده میکند - ورودیهایی که اخیراً کمتر استفاده شدهاند، ابتدا در طول جاروب حذف میشوند. 2امین از حافظه پنهان دیسک HTTP برای ذخیره داده های تصویر پردازش نشده استفاده می کند. همچنین امکان بررسی وجود تصویر درخواستی در کش وجود دارد.
خواندن/نوشتن تصاویر در حافظه یا کش دیسک از طریق 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()