Kingfisher
کتابخانه سوئیفت رایگان برای بارگیری و ذخیره تصاویر
API سوئیفت منبع باز که به توسعهدهندگان نرمافزار اجازه میدهد با تصاویر از راه دور در داخل برنامههای وب خود کار کنند. این اجازه می دهد تا تصاویر را بارگیری و ذخیره کنید، پردازشگرها و فیلترهای تصویر را اعمال کنید.
Kingfisher یک پیادهسازی خالص سبک وزن است که عملکرد کاملی را برای کار با چندین فرمت فایل تصویری با استفاده از کد Swift ارائه میکند. این کتابخانه به توسعه دهندگان کمک می کند تا برنامه هایی ایجاد کنند که بتوانند تصاویر را به راحتی از راه دور مدیریت کنند. این کتابخانه به صورت ناهمزمان تصاویر را در برنامه های خود دانلود و همچنین ذخیره می کند. این کتابخانه از یک کش چند لایه برای تصاویر دانلود شده پشتیبانی می کند که عملکرد برنامه ها را به شدت افزایش می دهد. این بدان معناست که تصاویر در حافظه و همچنین روی دیسک ذخیره می شوند، بنابراین نیازی به دانلود مجدد آن نیست.
مدیریت کتابخانه بسیار آسان است و امکاناتی را برای مدیریت کش فراهم می کند. کاربران به راحتی می توانند اندازه و همچنین مدت زمان کش را تعیین کنند. همچنین یک تسهیلات پاکسازی کش خودکار را فراهم می کند که به کاربران کمک می کند تا از استفاده بیش از حد از منابع کتابخانه جلوگیری کنند. یکی دیگر از ویژگی های عالی برای لغو کار گنجانده شده است. کاربران می توانند به راحتی فرآیند دانلود یا بازیابی تصویر را در صورت عدم نیاز به آن لغو کنند.
کتابخانه Kingfisher توسعه دهندگان را تسهیل می کند تا از اجزای بارگیری تصویر و ذخیره تصویر به طور جداگانه بر اساس نیاز خود استفاده کنند. حتی می توانید کش خود را با توجه به نیاز خود با استفاده از کد سوئیفت ایجاد کنید. با اجتناب از عملیات غیر ضروری دیسک، عملکرد کش دیسک را بهبود می بخشد. این کتابخانه منبع باز است و تحت مجوز MIT در دسترس است.
شروع با Kingfisher
با استفاده از دستور زیر آخرین منابع را کلون کنید
Kingfisher را از طریق GitHub نصب کنید.
$ git submodule add https://github.com/onevcat/Kingfisher.git
تصاویر را از طریق کتابخانه سوئیفت بارگیری و ذخیره کنید
دانلود برنامهنویسی یک تصویر و ذخیره آن در حافظه پنهان با استفاده از URL کار بسیار دشواری است. کتابخانه سوئیفت منبع باز Kingfisher این امکان را برای توسعه دهندگان نرم افزار فراهم می کند تا به طور موثر تصاویر را در برنامه های خود بارگیری و ذخیره کنند. این کتابخانه از ذخیره تصاویر هم در حافظه و هم روی دیسک پشتیبانی می کند. به طور پیش فرض، مقدار RAM مورد استفاده حتی محدود نیست و کاربران می توانند مقدار را خودشان تعیین کنند.
تصاویر را از طریق کتابخانه سوئیفت بارگیری و ذخیره کنید
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)
ذخیره یا حذف دستی تصاویر کش
کتابخانه سوئیفت منبع باز Kingfisher برنامه نویسان را قادر می سازد تا تصاویر را به راحتی از حافظه نهان ذخیره کنند و همچنین تصاویر را حذف کنند. بهطور پیشفرض، میتوان از روشهای پسوند view برای ذخیره خودکار تصویر بازیابی شده در حافظه پنهان استفاده کرد. اما می توانید این کار را به صورت دستی با متد 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)
}
}