প্রকল্প সম্পর্কে

কিংফিশার একটি শক্তিশালী, বিশুদ্ধ সুইফট লাইব্রেরি যা ওয়েব থেকে ছবি ডাউনলোড এবং ক্যাশ করার জন্য। এটি আপনার পরবর্তী অ্যাপে রিমোট ছবি নিয়ে কাজ করার একটি বিশুদ্ধ সুইফট উপায় প্রদান করে। ## বৈশিষ্ট্য - অ্যাসিঙ্ক্রোনাস ছবি ডাউনলোড এবং ক্যাশিং। - ইউআরএলসেশন-ভিত্তিক নেটওয়ার্কিং বা স্থানীয় প্রদত্ত ডেটা থেকে ছবি লোড করা। - দরকারী ইমেজ প্রসেসর এবং ফিল্টার প্রদান করা হয়। - মেমরি এবং ডিস্ক উভয়ের জন্য মাল্টি-লেয়ার হাইব্রিড ক্যাশ। - কাস্টমাইজযোগ্য মেয়াদ শেষ হওয়ার তারিখ এবং আকার সীমা সহ ক্যাশ আচরণের উপর সূক্ষ্ম নিয়ন্ত্রণ। - ডিস্ক ক্যাশ চেকের সময় কলার থ্রেড ব্লক করা এড়াতে কিংফিশার ম্যানেজারে অপ্ট-ইন অ্যাসিঙ্ক ক্যাশ প্রোবিং। - বাতিলযোগ্য ডাউনলোড এবং পূর্বে ডাউনলোড করা সামগ্রী স্বয়ংক্রিয়ভাবে পুনঃব্যবহার করে কর্মক্ষমতা উন্নত করে। - স্বাধীন উপাদান: প্রয়োজন অনুযায়ী ডাউনলোডার, ক্যাশিং সিস্টেম এবং ইমেজ প্রসেসর আলাদাভাবে ব্যবহার করুন। - ছবি প্রিফেচ করা এবং ক্যাশ থেকে সেগুলি দেখিয়ে আপনার অ্যাপকে গতিশীল করা। - ইউআইমেজভিউ, এনএসইমেজভিউ, এনএসবাটন, ইউআইবাটন, এনএসটেক্সটঅ্যাটাচমেন্ট, ডব্লিউকেইন্টারফেসইমেজ, টিভিমোনোগ্রামভিউ এবং সিপিলিস্টআইটেমের জন্য এক্সটেনশন যা সরাসরি ইউআরএল থেকে ছবি সেট করতে পারে। - ছবি সেট করার সময় অন্তর্নির্মিত ট্রানজিশন অ্যানিমেশন। - ছবি লোড করার সময় কাস্টমাইজযোগ্য প্লেসহোল্ডার এবং ইন্ডিকেটর। - সহজে প্রসারযোগ্য ইমেজ প্রসেসিং এবং ইমেজ ফরম্যাট। - লো ডেটা মোড সমর্থন। - সুইফটইউআই সমর্থন। - সুইফট ৬ এবং সুইফট কনকারেন্সি (কঠোর মোড) জন্য প্রস্তুত। - লাইভ ফটোর জন্য লোড এবং ক্যাশ। ## কিংফিশার ১০১ সবচেয়ে সহজ ব্যবহার-কেস হল ইউআইমেজভিউ এক্সটেনশনের সাথে একটি ইমেজ ভিউতে ছবি সেট করা: ```swift import Kingfisher let url = URL(string: "https://example.com/image.png") imageView.kf.setImage(with: url) ``` কিংফিশার ইউআরএল থেকে ছবি ডাউনলোড করবে, এটি মেমরি ক্যাশ এবং ডিস্ক ক্যাশ উভয়ে পাঠাবে এবং ইমেজভিউতে প্রদর্শন করবে। পরে যখন আপনি একই ইউআরএল দিয়ে এটি সেট করবেন, ছবিটি ক্যাশ থেকে পুনরুদ্ধার করা হবে এবং সাথে সাথে দেখানো হবে। আপনি যদি সুইফটইউআই ব্যবহার করেন তবে এটি কাজ করে: ```swift var body: some View { KFImage(URL(string: "https://example.com/image.png")!) } ``` ## আরও উন্নত উদাহরণ শক্তিশালী বিকল্পগুলির সাথে, আপনি কিংফিশার দিয়ে কঠিন কাজগুলি সহজভাবে করতে পারেন। উদাহরণস্বরূপ, নীচের কোডটি: ১. একটি উচ্চ-রেজোলিউশন ছবি ডাউনলোড করে। ২. ইমেজ ভিউ আকারের সাথে মেলাতে এটি ডাউনস্যাম্পল করে। ৩. প্রদত্ত ব্যাসার্ধ দিয়ে এটিকে গোল কোণ করে। ৪. ডাউনলোডের সময় একটি সিস্টেম ইন্ডিকেটর এবং একটি প্লেসহোল্ডার ছবি দেখায়। ৫. প্রস্তুত হলে, ছোট থাম্বনেইল ছবিটিকে "ফেড ইন" প্রভাব দিয়ে অ্যানিমেট করে। ৬. মূল বড় ছবিটিও পরে ব্যবহারের জন্য ডিস্কে ক্যাশ করা হয়, যাতে একটি বিবরণ ভিউতে এটি আবার ডাউনলোড করা এড়ানো যায়। ৭. কাজ শেষ হলে একটি কনসোল লগ প্রিন্ট হয়, সাফল্য বা ব্যর্থতার জন্য। ```swift let url = URL(string: "https://example.com/high_resolution_image.png") let processor = DownsamplingImageProcessor(size: imageView.bounds.size) |> RoundCornerImageProcessor(cornerRadius: 20) imageView.kf.indicatorType = .activity imageView.kf.setImage( with: url, placeholder: UIImage(named: "placeholderImage"), options: [ .processor(processor), .scaleFactor(UIScreen.main.scale), .transition(.fade(1)), .cacheOriginalImage ]) { result in switch result { case .success(let value): print("Task done for: \(value.source.url?.absoluteString ?? "")") case .failure(let error): print("Job failed: \(error.localizedDescription)") } } ``` এটি আমার দৈনন্দিন কাজে একটি সাধারণ পরিস্থিতি। ভাবুন কিংফিশার ছাড়া আপনাকে কত লাইন লিখতে হত! ## মেথড চেইনিং আপনি যদি kf এক্সটেনশনের ভক্ত না হন, আপনি KF বিল্ডার ব্যবহার করতে পারেন এবং মেথড কল চেইন করতে পারেন। নীচের কোডটি একই কাজ করে: ```swift // `kf` এক্সটেনশন ব্যবহার করুন imageView.kf.setImage( with: url, placeholder: placeholderImage, options: [ .processor(processor), .loadDiskFileSynchronously, .cacheOriginalImage, .transition(.fade(0.25)), .lowDataMode(.network(lowResolutionURL)) ], progressBlock: { receivedSize, totalSize in // অগ্রগতি আপডেট হয়েছে }, completionHandler: { result in // সম্পন্ন } ) // `KF` বিল্ডার ব্যবহার করুন KF.url(url) .placeholder(placeholderImage) .setProcessor(processor) .loadDiskFileSynchronously() .cacheMemoryOnly() .fade(duration: 0.25) .lowDataModeSource(.network(lowResolutionURL)) .onProgress { receivedSize, totalSize in } .onSuccess { result in } .onFailure { error in } .set(to: imageView) ``` এবং আরও ভাল, যদি পরে আপনি সুইফটইউআইতে স্যুইচ করতে চান, শুধু উপরের KF-কে KFImage-এ পরিবর্তন করুন, এবং আপনি সম্পন্ন করেছেন: ```swift struct ContentView: View { var body: some View { KFImage.url(url) .placeholder(placeholderImage) .setProcessor(processor) .loadDiskFileSynchronously() .cacheMemoryOnly() .fade(duration: 0.25) .lowDataModeSource(.network(lowResolutionURL)) .onProgress { receivedSize, totalSize in } .onSuccess { result in } .onFailure { error in } } } ``` ## প্রয়োজনীয়তা ### বর্তমান উন্নয়ন শাখা - আইওএস ১৫.০+ / ম্যাকওএস ১২.০+ / টিভিওএস ১৫.০+ / ওয়াচওএস ৯.০+ / ভিশনওএস ১.০+ - এক্সকোড ২৬.০+ / সুইফট ৬.২+ কম্পাইলার ### কিংফিশার ৮.০ - (ইউআইকিট/অ্যাপকিট) আইওএস ১৩.০+ / ম্যাকওএস ১০.১৫+ / টিভিওএস ১৩.০+ / ওয়াচওএস ৬.০+ / ভিশনওএস ১.০+ - (সুইফটইউআই) আইওএস ১৪.০+ / ম্যাকওএস ১১.০+ / টিভিওএস ১৪.০+ / ওয়াচওএস ৭.০+ / ভিশনওএস ১.০+ - সুইফট ৫.৯+ ### কিংফিশার ৭.০ - (ইউআইকিট/অ্যাপকিট) আইওএস ১২.০+ / ম্যাকওএস ১০.১৪+ / টিভিওএস ১২.০+ / ওয়াচওএস ৫.০+ / ভিশনওএস ১.০+ - (সুইফটইউআই) আইওএস ১৪.০+ / ম্যাকওএস ১১.০+ / টিভিওএস ১৪.০+ / ওয়াচওএস ৭.০+ / ভিশনওএস ১.০+ - সুইফট ৫.০+ ## ইনস্টলেশন ফ্রেমওয়ার্কটি ইনস্টল এবং ব্যবহার করতে নিম্নলিখিত টিউটোরিয়ালগুলির একটি দেখুন: - [ইউআইকিট টিউটোরিয়াল](https://swiftpackageindex.com/onevcat/kingfisher/master/tutorials/kingfisher/gettingstarteduikit) - [সুইফটইউআই টিউটোরিয়াল](https://swiftpackageindex.com/onevcat/kingfisher/master/tutorials/kingfisher/gettingstartedswiftui) বিকল্পভাবে, আপনি নীচের পদ্ধতিগুলির একটি অনুসরণ করতে পারেন। ### সুইফট প্যাকেজ ম্যানেজার - ফাইল > সুইফট প্যাকেজ > প্যাকেজ নির্ভরতা যোগ করুন - `https://github.com/onevcat/Kingfisher.git` যোগ করুন - "আপ টু নেক্সট মেজর" নির্বাচন করুন "৮.০.০" দিয়ে ### কোকোপডস ```ruby source 'https://github.com/CocoaPods/Specs.git' platform :ios, '13.0' use_frameworks! target 'MyApp' do pod 'Kingfisher', '~> 8.0' end ``` ### প্রি-বিল্ট ফ্রেমওয়ার্ক ১. রিলিজ পৃষ্ঠা খুলুন, অ্যাসেট বিভাগ থেকে কিংফিশারের সর্বশেষ সংস্করণ ডাউনলোড করুন। ২. `Kingfisher.xcframework` আপনার প্রজেক্টে টেনে আনুন এবং টার্গেটে (সাধারণত অ্যাপ টার্গেট) যোগ করুন। ৩. আপনার টার্গেট নির্বাচন করুন, "জেনারেল" ট্যাবে, "ফ্রেমওয়ার্ক, লাইব্রেরি এবং এমবেডেড কন্টেন্ট" বিভাগটি খুঁজুন, কিংফিশারের জন্য `এমবেড উইদাউট সাইনিং` সেট করুন। ## ডকুমেন্টেশন ডকুমেন্টেশন এবং টিউটোরিয়াল দেখুন: - [ডকুমেন্টেশন হোম](https://swiftpackageindex.com/onevcat/kingfisher/master/documentation/kingfisher) - [শুরু করা](https://swiftpackageindex.com/onevcat/kingfisher/master/documentation/kingfisher/gettingstarted) - [ইউআইকিট টিউটোরিয়াল](https://swiftpackageindex.com/onevcat/kingfisher/master/tutorials/kingfisher/gettingstarteduikit) - [সুইফটইউআই টিউটোরিয়াল](https://swiftpackageindex.com/onevcat/kingfisher/master/tutorials/kingfisher/gettingstartedswiftui) - [সাধারণ কাজ - সাধারণ](https://swiftpackageindex.com/onevcat/kingfisher/master/documentation/kingfisher/commontasks) - [সাধারণ কাজ - ক্যাশ](https://swiftpackageindex.com/onevcat/kingfisher/master/documentation/kingfisher/commontasks_cache) - [সাধারণ কাজ - ডাউনলোডার](https://swiftpackageindex.com/onevcat/kingfisher/master/documentation/kingfisher/commontasks_downloader) - [সাধারণ কাজ - প্রসেসর](https://swiftpackageindex.com/onevcat/kingfisher/master/documentation/kingfisher/commontasks_processor) ### মাইগ্রেশন - [কিংফিশার ৮.০ মাইগ্রেশন](https://swiftpackageindex.com/onevcat/kingfisher/master/documentation/kingfisher/migration-to-8) - [কিংফিশার ৭.০ মাইগ্রেশন](https://github.com/onevcat/Kingfisher/wiki/Kingfisher-7.0-Migration-Guide) আপনি যদি আরও আগের সংস্করণ ব্যবহার করেন, মাইগ্রেশনের পদক্ষেপ জানতে নীচের গাইডগুলি দেখুন। ## অন্যান্য ### কিংফিশারের ভবিষ্যত আমি কিংফিশারকে হালকা রাখতে চাই। এই ফ্রেমওয়ার্কটি ছবি ডাউনলোড এবং ক্যাশ করার জন্য একটি সহজ সমাধান প্রদানের উপর দৃষ্টি নিবদ্ধ করে। এর অর্থ এই নয় যে ফ্রেমওয়ার্কটি উন্নত করা যায় না। কিংফিশার নিখুঁত থেকে অনেক দূরে, তাই এটিকে আরও ভাল করার জন্য প্রয়োজনীয় এবং দরকারী আপডেট করা হবে। ### উন্নয়ন এবং পরীক্ষা যেকোনো অবদান এবং পুল রিকোয়েস্ট আন্তরিকভাবে স্বাগত। তবে, কিছু বৈশিষ্ট্য বাস্তবায়ন বা একটি অনিশ্চিত সমস্যা সমাধানের চেষ্টা করার আগে, প্রথমে একটি আলোচনা খোলার পরামর্শ দেওয়া হয়। আপনার পুল রিকোয়েস্টগুলি সমস্ত পরীক্ষা সবুজ দিয়ে তৈরি হলে প্রশংসা করা হবে। :) ### লোগো সম্পর্কে কিংফিশারের লোগোটি ট্যাংগ্রাম (七巧板) দ্বারা অনুপ্রাণিত, যা চীন থেকে সাতটি সমতল আকার নিয়ে গঠিত একটি বিভাজন পাজল। আমি বিশ্বাস করি তিনি একটি কিংফিশার পাখি, একটি সুইফট নয়, তবে কেউ কেউ জোর দিয়ে বলেন যে তিনি একটি পায়রা। আমি মনে করি আমার তার একটি নাম দেওয়া উচিত। হাই, বন্ধুরা, আপনার কোন পরামর্শ আছে? ### যোগাযোগ টুইটার বা সিনা ওয়েইবোতে আমাকে অনুসরণ করুন এবং যোগাযোগ করুন। আপনি যদি একটি সমস্যা খুঁজে পান, একটি টিকিট খুলুন। পুল রিকোয়েস্টও আন্তরিকভাবে স্বাগত। ## সমর্থক ও স্পনসর ওপেন-সোর্স প্রকল্পগুলি আপনার সাহায্য ছাড়া দীর্ঘদিন বাঁচতে পারে না। আপনি যদি কিংফিশারকে দরকারী মনে করেন, দয়া করে একজন স্পনসর হয়ে এই প্রকল্পটিকে সমর্থন করার কথা বিবেচনা করুন। আপনার ব্যবহারকারী আইকন বা কোম্পানির লোগো আমার ব্লগে আপনার হোম পেজের লিঙ্ক সহ দেখায়। গিটহাব স্পনসরদের মাধ্যমে একজন স্পনসর হন। :heart: imgly এবং emergetools-কে বিশেষ ধন্যবাদ। ### লাইসেন্স কিংফিশার এমআইটি লাইসেন্সের অধীনে প্রকাশিত। বিস্তারিত জানার জন্য লাইসেন্স দেখুন।