Nuke

 
 

ছবি সম্পাদনা ও প্রক্রিয়াকরণের জন্য ওপেন সোর্স সুইফট লাইব্রেরি

বিনামূল্যের সুইফ্ট এপিআই যা ছবি পাইপলাইন কাস্টমাইজ করতে, ছবির আকার পরিবর্তন করতে, একটি কাস্টম প্রসেসর ব্যবহার করতে, বৃত্তাকার ছবির কর্নার,  ডাউনলোড এবং নগদ ছবি এবং আরও অনেক কিছু করতে দেয়।

Nuke একটি খুব দরকারী ওপেন সোর্স সুইফট ফ্রেমওয়ার্ক যা সফ্টওয়্যার ডেভেলপারদের তাদের নিজস্ব সুইফট অ্যাপ্লিকেশনের মধ্যে সহজেই ছবি লোড এবং প্রদর্শন করতে সক্ষম করে। আপনার অ্যাপ্লিকেশানগুলিতে ছবিগুলি ডাউনলোড এবং প্রদর্শন করার জন্য কোডের একটি লাইন প্রয়োজন৷ লাইব্রেরীতে বেশ কিছু উন্নত বৈশিষ্ট্য যেমন ইমেজ প্রিহিটিং এবং প্রগতিশীল ডিকোডিং এর জন্য সমর্থন অন্তর্ভুক্ত করা হয়েছে যা নাটকীয়ভাবে অ্যাপের কর্মক্ষমতা এবং ব্যবহারকারীর অভিজ্ঞতাকে বাড়িয়ে তুলতে পারে।

Nuke API ব্যবহার করা খুবই সহজ এবং একটি খুব উন্নত আর্কিটেকচার রয়েছে যা সফটওয়্যার ডেভেলপারদের ইমেজ প্রসেসিং এবং কাস্টমাইজেশনের জন্য কার্যত সীমাহীন সম্ভাবনার কথা ভাবতে সক্ষম করে। এতে মৌলিক ইমেজ ফরম্যাট যেমন JPEG, PNG, HEIF এবং আরও অনেক কিছুর জন্য অন্তর্নির্মিত সমর্থন অন্তর্ভুক্ত রয়েছে। এটি সুইফট কোড ব্যবহার করে ইমেজ এনকোডিং এবং ডিকোডিং সমর্থন করে।

লাইব্রেরিটি খুবই বৈশিষ্ট্য সমৃদ্ধ এবং সুইফট কমান্ড ব্যবহার করে তাদের ছবি পরিচালনা করার জন্য বেশ কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য অন্তর্ভুক্ত করেছে, যেমন লোড ইমেজ, ইমেজ পাইপলাইন কাস্টমাইজ করা, ইমেজ রিসাইজ করা, গাউসিয়ান ব্লারের মতো ফিল্টার প্রয়োগ করা, কাস্টম প্রসেসর ব্যবহার করা, রাউন্ড ইমেজ কর্নার, LRU মেমরি। ক্যাশে, এইচটিটিপি ডিস্ক ক্যাশে, আক্রমনাত্মক এলআরইউ ডিস্ক ক্যাশে, ছবি পুনরায় লোড করা, চিত্র অ্যানিমেশন, স্মার্ট ব্যাকগ্রাউন্ড ডিকম্প্রেশন, ডাউনলোড পুনরায় শুরু করা, অগ্রাধিকারের অনুরোধ, লো ডেটা মোড এবং আরও অনেক কিছু।

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 

সুইফট ব্যবহার করে ছবি ডাউনলোড করুন এবং ব্যবহার করুন

ওপেন সোর্স Nuke API আপনার সুইফট অ্যাপের মধ্যে ছবি ডাউনলোড এবং ব্যবহার করার জন্য একটি সুসংগঠিত এবং কার্যকর উপায় প্রদান করে। ছবিগুলি আনতে আপনাকে প্রয়োজনীয় ছবির URL পাস করতে হবে এবং তারপরে সারসংকলন পদ্ধতিতে কল করতে হবে। এটি ব্যাকগ্রাউন্ডে অনুরোধ করা ছবিটি ডাউনলোড করবে এবং এটি হয়ে গেলে প্রতিক্রিয়া বন্ধ করার বিষয়ে জানাবে।

সুইফট অ্যাপের মধ্যে বিভিন্ন উপায়ে ছবি দেখুন

// 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"))
    }
} 

সুইফট এপিআই ব্যবহার করে ইমেজ প্রিফেচ করুন

প্রিফেচিং একটি খুব দরকারী বৈশিষ্ট্য যা ব্যবহারকারীদের ইমেজ বা অন্যান্য ডেটা ব্যবহারের পূর্বে আগে থেকে ডাউনলোড করতে সক্ষম করে। অ্যাপগুলি এটি ডাউনলোড করতে পারে এবং অ্যাপ্লিকেশনের নেটওয়ার্ক ক্যাশে সংরক্ষণ করতে পারে। পরে যখন আপনাকে ছবিটি দেখতে হবে তখন আপনার অনুরোধের প্রতিক্রিয়া নেটওয়ার্কের পরিবর্তে ক্যাশে থেকে ফিরে আসবে। ওপেন সোর্স API Nuke সুইফট কোড ব্যবহার করে প্রিফেচিং ইমেজ নামে পরিচিত একটি উত্তেজনাপূর্ণ বৈশিষ্ট্যের জন্য সমর্থন অন্তর্ভুক্ত করেছে। অনুগ্রহ করে মনে রাখবেন যে প্রিফেচিং ব্যবহারকারীদের ডেটা গ্রহণ করতে পারে এবং CPU এর পাশাপাশি মেমরিতে অতিরিক্ত চাপ দিতে পারে। এই চাপ কমাতে আপনি প্রিফেচিং গন্তব্য হিসাবে শুধুমাত্র ডিস্ক ক্যাশে বেছে নিতে পারেন।

সুইফট এপিআই ব্যবহার করে গিটহাব প্রিফেচ এবং ক্যাশে

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)
    }
} 

সুইফটের মাধ্যমে লোড এবং নগদ ছবি

ইমেজ ক্যাশিং একটি খুব দরকারী পদ্ধতি যা অ্যাপ্লিকেশন কর্মক্ষমতা এবং শেষ ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। ওপেন সোর্স Nuke API সফ্টওয়্যার অ্যাপগুলিকে ডাউনলোড করা ছবিগুলি স্বয়ংক্রিয়ভাবে ক্যাশে করতে সক্ষম করে৷ Nuke দুটি অন্তর্নির্মিত ক্যাশিং স্তরের উপর নির্ভর করে। প্রথমটি প্রক্রিয়াকৃত চিত্র সংরক্ষণ করতে ব্যবহৃত হয়, যা প্রদর্শনের জন্য প্রস্তুত। এটি LRU অ্যালগরিদম ব্যবহার করে - ঝাড়ু দেওয়ার সময় সর্বনিম্ন সম্প্রতি ব্যবহৃত এন্ট্রিগুলি প্রথমে সরানো হয়। 2nd একটি অপ্রসেসড ইমেজ ডেটা সংরক্ষণ করতে HTTP ডিস্ক ক্যাশে ব্যবহার করে। ক্যাশে অনুরোধ করা চিত্রের অস্তিত্ব পরীক্ষা করাও সম্ভব।

সুইফট 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() 
 বাংলা