Kingfisher
ছবি ডাউনলোড ও ক্যাশে করার জন্য বিনামূল্যে সুইফট লাইব্রেরি
ওপেন সোর্স সুইফট এপিআই যা সফ্টওয়্যার ডেভেলপারদের তাদের ওয়েব অ্যাপের মধ্যে রিমোট ইমেজ নিয়ে কাজ করতে দেয়। এটি ছবি ডাউনলোড এবং ক্যাশে করতে, ইমেজ প্রসেসর এবং ফিল্টার প্রয়োগ করতে দেয়।
Kingfisher হল একটি হালকা ওজনের বিশুদ্ধ সুইফট বাস্তবায়ন যা সুইফট কোড ব্যবহার করে একাধিক ইমেজ ফাইল ফরম্যাটের সাথে কাজ করার জন্য সম্পূর্ণ কার্যকারিতা প্রদান করে। লাইব্রেরি ডেভেলপারদের এমন অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে যা দূরবর্তীভাবে সহজেই ছবি পরিচালনা করতে পারে। লাইব্রেরি অসিঙ্ক্রোনাসভাবে ডাউনলোড করে সেইসাথে তাদের নিজস্ব অ্যাপ্লিকেশনের মধ্যে ছবি ক্যাশে করে। লাইব্রেরি ডাউনলোড করা ইমেজগুলির জন্য একটি মাল্টিপল-লেয়ার ক্যাশে সমর্থন করে যা অ্যাপগুলির কার্যক্ষমতাকে ব্যাপকভাবে উন্নত করে। এর অর্থ হল ছবিগুলি মেমরির পাশাপাশি ডিস্কে ক্যাশ করা হবে তাই এটিকে আবার ডাউনলোড করার দরকার নেই।
লাইব্রেরিটি পরিচালনা করা খুব সহজ এবং ক্যাশে পরিচালনার জন্য একটি সুবিধা প্রদান করে। ব্যবহারকারীরা সহজেই আকারের পাশাপাশি ক্যাশের সময়কাল সেট করতে পারেন। এটি একটি স্বয়ংক্রিয় ক্যাশে ক্লিনিং সুবিধাও প্রদান করবে যা ব্যবহারকারীদের লাইব্রেরীকে অনেক রিসোর্স ব্যবহার করা থেকে আটকাতে সাহায্য করে। টাস্ক বাতিল করার জন্য অন্য একটি দুর্দান্ত বৈশিষ্ট্য অন্তর্ভুক্ত করা হয়েছে। ব্যবহারকারীরা সহজেই ডাউনলোড বা ছবি পুনরুদ্ধার প্রক্রিয়া বাতিল করতে পারেন যদি এটি আর প্রয়োজন না হয়।
Kingfisher লাইব্রেরি ডেভেলপারদের তাদের প্রয়োজন অনুযায়ী আলাদাভাবে ইমেজ ডাউনলোডিং এবং ইমেজ ক্যাশিং উপাদান ব্যবহার করতে সাহায্য করে। এমনকি আপনি সুইফট কোড ব্যবহার করে আপনার নিজের চাহিদা অনুযায়ী আপনার নিজস্ব ক্যাশে তৈরি করতে পারেন। এটি অপ্রয়োজনীয় ডিস্ক অপারেশন এড়িয়ে ডিস্ক ক্যাশে কর্মক্ষমতা উন্নত করে। লাইব্রেরিটি ওপেন সোর্স এবং এমআইটি লাইসেন্সের অধীনে উপলব্ধ।
কিংফিশার দিয়ে শুরু করা
নিম্নলিখিত কমান্ড ব্যবহার করে সর্বশেষ উত্স ক্লোন করুন
GitHub এর মাধ্যমে Kingfisher ইনস্টল করুন।
$ 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])
সুইফট অ্যাপের ভিতরে ছবি দেখা
Kingfisher লাইব্রেরি সফ্টওয়্যার প্রোগ্রামারদের সহজেই তাদের অ্যাপ্লিকেশনের ভিতরে ছবি দেখার ক্ষমতা অন্তর্ভুক্ত করতে দেয়। একটি ইমেজ ভিউ সেট করার সবচেয়ে সহজ উপায় হল UIImageView এক্সটেনশন ব্যবহার করা। লাইব্রেরি ইউআরএল থেকে ছবিটি ডাউনলোড করবে এবং এটিকে মেমরি ক্যাশে এবং ডিস্ক ক্যাশে উভয় দিকে নিয়ে যাবে এবং এটি ইমেজভিউতে প্রদর্শন করবে। পরবর্তী ব্যবহারকারীরা একই ইউআরএলে কল করলে, এটি দ্রুত ক্যাশে থেকে ছবিটি পুনরুদ্ধার করবে এবং প্রদর্শন করবে। এটি ইমেজ সম্পর্কিত বিভিন্ন ফাংশনকেও সমর্থন করে যেমন ডাউনলোড ইমেজ ফেইড করা, প্লেসহোল্ডার দেখানো, রাউন্ড কর্নার ইমেজ ইত্যাদি।
সুইফ্ট অ্যাপের ভিতরে ছবি দেখুন
import Kingfisher
let url = URL(string: "https://example.com/image.png")
imageView.kf.setImage(with: url)
ম্যানুয়ালি সংরক্ষণ করুন বা ক্যাশে ছবি সরান
ওপেন সোর্স সুইফ্ট লাইব্রেরি Kingfisher প্রোগ্রামারদের সঞ্চয় করার পাশাপাশি ক্যাশে থেকে সহজে ইমেজ অপসারণ করতে সক্ষম করে। ডিফল্টরূপে, পুনরুদ্ধার করা চিত্র স্বয়ংক্রিয়ভাবে ক্যাশে সংরক্ষণ করতে ভিউ এক্সটেনশন পদ্ধতি ব্যবহার করা যেতে পারে। কিন্তু আপনি cache.store() পদ্ধতিতে ম্যানুয়ালি এটি করতে পারেন। আপনি ছবিটির আসল ডেটাও পাস করতে পারেন যা লাইব্রেরীকে ছবিটি কোন ফর্ম্যাটে সংরক্ষণ করা উচিত তা নির্ধারণ করতে সহায়তা করে। এটি ক্যাশে থেকে একটি নির্দিষ্ট চিত্র ম্যানুয়ালি মুছে ফেলার জন্য সমর্থন প্রদান করে। এটি সমস্ত ক্যাশে ডেটা সাফ করা, ডিস্ক স্টোরেজ সাইজ রিপোর্ট করা এবং আপনার নিজস্ব ক্যাশে তৈরি করা সমর্থন করে।
সুইফ্ট অ্যাপের ভিতরে ছবি দেখুন
//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)
}
}