Nuke

 
 

ספריית Swift בקוד פתוח לעריכה ועיבוד תמונות

ממשק API חינמי של Swift מאפשר להתאים אישית את צנרת התמונות, לשנות את גודל התמונות, להשתמש במעבד מותאם אישית, לעגל פינות תמונה, להוריד ולכסות תמונות וכן הלאה.

Nuke היא מסגרת Swift בקוד פתוח מאוד שימושית המאפשרת למפתחי תוכנה לטעון ולהציג תמונות בקלות בתוך יישומי Swift שלהם. זה דורש רק שורת קוד אחת כדי להוריד ולהציג תמונות באפליקציות שלך. הספרייה כללה גם תמיכה במספר תכונות מתקדמות כגון חימום מוקדם של תמונה ופענוח פרוגרסיבי שיכולים לשפר באופן דרמטי את ביצועי האפליקציה וגם את חווית המשתמש.

Nuke API קל מאוד לשימוש ובעל ארכיטקטורה מתקדמת מאוד המאפשרת למפתחי תוכנה לחשוב על אפשרויות כמעט בלתי מוגבלות לעיבוד תמונה והתאמה אישית. הוא כלל תמיכה מובנית בפורמטים בסיסיים של תמונה כגון JPEG, PNG, HEIF ועוד רבים. זה תומך גם בקידוד ופענוח תמונות באמצעות קוד Swift.

הספרייה עשירה מאוד בתכונות וכללה מספר תכונות חשובות לטיפול בתמונות שלהן באמצעות פקודות Swift, כגון טעינת תמונות, התאמה אישית של צינור תמונה, שינוי גודל תמונות, החלת מסננים כמו טשטוש גאוס, שימוש במעבד מותאם אישית, פינות תמונה, זיכרון LRU מטמון, מטמון דיסק HTTP, מטמון דיסק LRU אגרסיבי, טעינה מחדש של תמונות, אנימציית תמונה, פירוק רקע חכם, חידוש הורדות, בקשת עדיפות, מצב נתונים נמוך ועוד רבים נוספים.

Previous Next

תחילת העבודה עם 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 API מספק דרך מאורגנת ויעילה להורדה ושימוש בתמונות בתוך אפליקציות Swift שלך. כדי להביא את התמונות צריך להעביר את כתובת האתר של התמונה הנדרשת ואז לקרוא לשיטת קורות החיים. זה יוריד את התמונה המבוקשת ברקע ויודיע לסגירת התגובה כשזה יסתיים.

תמונות בדרכים שונות בתוך Apps 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

Prefetting היא תכונה שימושית מאוד המאפשרת למשתמשים להוריד את התמונה או נתונים אחרים מראש לקראת השימוש בה. היישומים יכולים להוריד אותו ולאחסן אותו במטמון הרשת של היישום. מאוחר יותר כאשר אתה צריך להציג את התמונה התגובה לבקשתך תחזור מהמטמון במקום מהרשת. הקוד הפתוח API Nuke כלל תמיכה בתכונה מרגשת המכונה תמונות Prefetting באמצעות קוד סוויפט. יש לזכור כי Prefetting יכול לקחת את הנתונים של משתמשים ולהפעיל לחץ נוסף על המעבד, כמו גם זיכרון. כדי להפחית את הלחץ הזה אתה יכול לבחור רק את מטמון הדיסק כיעד ההכנה.

Prefect Cache 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 API מאפשר לאפליקציות תוכנה לשמור באופן אוטומטי את התמונות שהורדת. Nuke מסתמך על שתי שכבות מטמון מובנות. הראשון משמש לאחסון תמונה מעובדת, המוכנה לתצוגה. הוא משתמש באלגוריתם LRU - הערכים שבהם השתמשת פחות לאחרונה מוסרים תחילה במהלך הסוויפ. ה-2nd משתמש ב-HTTP Disk Cache כדי לאחסן את נתוני התמונה הלא מעובדים. כמו כן, ניתן לבדוק את קיומה של התמונה המבוקשת במטמון.

Read/Write תמונות במחסן זיכרון או דיסק באמצעות סוויפט 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() 
 עִברִית