Nuke
مكتبة سويفت مفتوحة المصدر لتحرير الصور ومعالجتها
Swift API المجاني الذي يسمح بتخصيص خط أنابيب الصور ، وتغيير حجم الصور ، واستخدام معالج مخصص ، وزوايا الصورة المستديرة ، والتنزيل ، والصور النقدية وما إلى ذلك.
Nuke هو إطار عمل Swift مفتوح المصدر ومفيد للغاية يمكّن مطوري البرامج من تحميل وعرض الصور بسهولة داخل تطبيقات Swift الخاصة بهم. يتطلب سطرًا واحدًا فقط من التعليمات البرمجية لتنزيل الصور وعرضها في تطبيقاتك. تضمنت المكتبة أيضًا دعمًا للعديد من الميزات المتقدمة مثل التسخين المسبق للصور وفك التشفير التدريجي الذي يمكن أن يعزز أداء التطبيق بشكل كبير بالإضافة إلى تجربة المستخدم.
واجهة برمجة تطبيقات Nuke سهلة الاستخدام للغاية ولديها بنية متقدمة جدًا تمكن مطوري البرامج من التفكير في إمكانيات غير محدودة تقريبًا لمعالجة الصور وتخصيصها. لقد تضمن دعمًا مدمجًا لتنسيقات الصور الأساسية مثل JPEG و PNG و HEIF وغيرها الكثير. كما أنه يدعم تشفير الصور وفك تشفيرها باستخدام كود Swift.
المكتبة غنية بالميزات وقد تضمنت العديد من الميزات المهمة للتعامل مع صورهم باستخدام أوامر Swift ، مثل تحميل الصور ، وتخصيص خط أنابيب الصور ، وتغيير حجم الصور ، وتطبيق المرشحات مثل Gaussian blur ، باستخدام معالج مخصص ، وزوايا صورة مستديرة ، وذاكرة LRU ذاكرة التخزين المؤقت ، ذاكرة التخزين المؤقت لقرص HTTP ، ذاكرة التخزين المؤقت لقرص LRU العدوانية ، إعادة تحميل الصور ، الرسوم المتحركة للصور ، إلغاء ضغط الخلفية الذكية ، استئناف التنزيلات ، ترتيب الأولويات ، وضع البيانات المنخفضة وغيرها الكثير.
الابتداء مع Nuke
الطريقة الموصى بها لتثبيت Nuke هي استخدام CocoaPods. الرجاء إضافة الأسطر التالية إلى ملف Podfile الخاص بك
قم بتثبيت Nuke عبر CocoaPods.
pod "Nuke"
pod "Nuke-Alamofire-Plugin" # optional
pod "Nuke-AnimatedImage-Plugin" # optional
استنساخ أحدث المصادر باستخدام الأمر التالي.
قم بتثبيت Nuke عبر GitHub.
$ git https://github.com/kean/Nuke.git
قم بتنزيل الصور واستخدامها باستخدام Swift
توفر واجهة برمجة تطبيقات Nuke مفتوحة المصدر طريقة جيدة التنظيم وفعالة لتنزيل الصور واستخدامها داخل تطبيقات Swift الخاصة بك. لجلب الصور ، تحتاج إلى تمرير عنوان 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 مفتوح المصدر دعمًا لميزة مثيرة تُعرف باسم الجلب المسبق للصور باستخدام رمز Swift. يرجى تذكر أن الجلب المسبق يمكن أن يأخذ بيانات المستخدمين ويضع ضغطًا إضافيًا على وحدة المعالجة المركزية وكذلك الذاكرة. لتقليل هذا الضغط ، يمكنك اختيار ذاكرة التخزين المؤقت على القرص فقط كوجهة الجلب المسبق.
الجلب المسبق والتخزين المؤقت لـ 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)
}
}
تحميل الصور النقدية عبر Swift
يعد التخزين المؤقت للصور طريقة مفيدة للغاية تعمل على تحسين أداء التطبيق وتجربة المستخدم النهائي. تعمل واجهة برمجة تطبيقات Nuke مفتوحة المصدر على تمكين تطبيقات البرامج من التخزين المؤقت للصور التي تم تنزيلها تلقائيًا. يعتمد Nuke على طبقتين مدمجتين للتخزين المؤقت. يستخدم الأول لتخزين الصورة المعالجة ، وهي جاهزة للعرض. يستخدم خوارزمية LRU - تتم إزالة المدخلات الأقل استخدامًا أولاً أثناء عملية المسح. يستخدم العنصر الثاني nd ذاكرة التخزين المؤقت على قرص 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()