Nuke
Βιβλιοθήκη Swift ανοιχτού κώδικα για επεξεργασία και επεξεργασία εικόνας
Δωρεάν Swift API που επιτρέπει να προσαρμόσετε τη διοχέτευση εικόνων, να αλλάξετε το μέγεθος των εικόνων, να χρησιμοποιήσετε προσαρμοσμένο επεξεργαστή, στρογγυλές γωνίες εικόνας, λήψη και εικόνων σε μετρητά κ.λπ.
Το Nuke είναι ένα πολύ χρήσιμο πλαίσιο ανοικτού κώδικα που επιτρέπει στους προγραμματιστές λογισμικού να φορτώνουν εύκολα και να προβάλλουν εικόνες μέσα στις δικές τους εφαρμογές Swift. Απαιτεί μόνο μία γραμμή κώδικα για να κατεβάσετε και να εμφανίσετε εικόνες στις εφαρμογές σας. Η βιβλιοθήκη έχει επίσης συμπεριλάβει υποστήριξη για πολλά προηγμένα χαρακτηριστικά, όπως παρουσίαση εικόνας και προοδευτική αποκωδικοποίηση που μπορεί να βελτιώσει δραματικά την απόδοση της εφαρμογής καθώς και την εμπειρία του χρήστη.
Το Nuke API είναι πολύ εύκολο στη χρήση και έχει μια πολύ προηγμένη αρχιτεκτονική που επιτρέπει στους προγραμματιστές λογισμικού να σκεφτούν ουσιαστικά απεριόριστες δυνατότητες επεξεργασίας και προσαρμογής εικόνας. Περιλαμβάνει ενσωματωμένη υποστήριξη για βασικές μορφές εικόνας όπως JPEG, PNG, HEIF και πολλά άλλα. Υποστηρίζει επίσης κωδικοποίηση και αποκωδικοποίηση εικόνας με χρήση κώδικα Swift.
Η βιβλιοθήκη είναι πλούσια σε χαρακτηριστικά και έχει συμπεριλάβει πολλά σημαντικά χαρακτηριστικά για το χειρισμό των εικόνων τους χρησιμοποιώντας εντολές Swift, όπως εικόνες φορτίου, προσαρμόζοντας τις εικόνες, εφαρμόζοντας φίλτρα όπως το ρωσικό bluur, χρησιμοποιώντας έναν προσαρμοσμένο επεξεργαστή.
Ξεκινώντας με το 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
Το API ανοιχτού κώδικα 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
Το Prefetching είναι ένα πολύ χρήσιμο χαρακτηριστικό που επιτρέπει στους χρήστες να κατεβάζουν την εικόνα ή άλλα δεδομένα μπροστά από το χρόνο εν αναμονή της χρήσης της. Οι εφαρμογές μπορούν να το κατεβάσουν και να το αποθηκεύσουν στην cache δικτύου της εφαρμογής. Αργότερα, όταν πρέπει να δείτε την εικόνα, η απάντηση στο αίτημά σας θα επιστρέψει από την cache αντί του δικτύου. Το open source API Nuke έχει συμπεριλάβει υποστήριξη για ένα συναρπαστικό χαρακτηριστικό γνωστό ως Prefetching εικόνες χρησιμοποιώντας κώδικα Swift. Θυμηθείτε ότι το Prefetching μπορεί να πάρει τα δεδομένα των χρηστών και να ασκήσει επιπλέον πίεση στην CPU καθώς και στη μνήμη. Για να μειώσετε αυτή την πίεση, μπορείτε να επιλέξετε μόνο την 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
Η προσωρινή αποθήκευση εικόνων είναι μια πολύ χρήσιμη μέθοδος που βελτιώνει την απόδοση της εφαρμογής και την εμπειρία του τελικού χρήστη. Το API ανοιχτού κώδικα Nuke επιτρέπει στις εφαρμογές λογισμικού να αποθηκεύουν αυτόματα τις εικόνες που έχουν ληφθεί. Το Nuke βασίζεται σε δύο ενσωματωμένα επίπεδα προσωρινής αποθήκευσης. Η πρώτη χρησιμοποιείται για την αποθήκευση επεξεργασμένης εικόνας, η οποία είναι έτοιμη για προβολή. Χρησιμοποιεί τον αλγόριθμο LRU – οι λιγότερο πρόσφατα χρησιμοποιημένες καταχωρήσεις αφαιρούνται πρώτα κατά τη διάρκεια της σάρωσης. Η 2η χρησιμοποιεί την προσωρινή μνήμη δίσκου HTTP για την αποθήκευση των μη επεξεργασμένων δεδομένων εικόνας. Είναι επίσης δυνατό να ελέγξετε την ύπαρξη της ζητούμενης εικόνας στην κρυφή μνήμη.
Read/Write εικόνες στη μνήμη ή την μνήμη δίσκου μέσω 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()