Photo Editing Extension: τι είναι, δυνατότητες επέκτασης για iOS

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-06-15 Χρόνος ανάγνωσης: 9 λεπ

Photo Editing Extension — είναι ένας μηχανισμός iOS που επιτρέπει σε εφαρμογές τρίτων να προσθέτουν εργαλεία επεξεργασίας απευθείας στην εφαρμογή συστήματος Φωτογραφίες. Σε αντίθεση με τους πλήρεις επεξεργαστές, η επέκταση δεν φορτώνει την εικόνα σε ξεχωριστή εφαρμογή — ο χρήστης εφαρμόζει φίλτρα, διορθώνει χρώματα ή προσθέτει εφέ χωρίς να εγκαταλείπει την τυπική διεπαφή. Σύμφωνα με το Apple Developer Documentation (2025), το PhotoKit παρέχει πάνω από 40 API για εργασία με πόρους φωτογραφιών, συμπεριλαμβανομένων των PHAdjustmentData και PHContentEditingController.

Βασικά σημεία

  • Photo Editing Extension ενσωματώνει εργαλεία επεξεργασίας στην τυπική εφαρμογή Φωτογραφίες στο iOS χωρίς εναλλαγή μεταξύ προγραμμάτων
  • Η αρχιτεκτονική βασίζεται στο πρωτόκολλο PHContentEditingController, το οποίο διαχειρίζεται την εμφάνιση της διεπαφής και τη λήψη της αρχικής εικόνας
  • Η επέκταση χρησιμοποιεί μη καταστροφική επεξεργασία — όλες οι αλλαγές αποθηκεύονται ως AdjustmentData και το πρωτότυπο παραμένει ανέπαφο
  • Για εργασία με την εικόνα, η επέκταση λαμβάνει PHContentEditingInput με το πλήρες αρχείο φωτογραφίας και μεταδεδομένα
  • PhotoKit παρέχει πρόσβαση σε πόρους φωτογραφιών μέσω PHAsset, PHAssetResource και PHImageManager

Τι είναι το Photo Editing Extension στο iOS

Photo Editing Extension — είναι ένας τύπος επέκτασης εφαρμογής στο iOS που εισάγει εργαλεία επεξεργασίας εικόνας στην τυπική διεπαφή της εφαρμογής Φωτογραφίες. Ο χρήστης ανοίγει μια φωτογραφία, πατά το κουμπί «Επεξεργασία» και επιλέγει την επιθυμητή επέκταση από τη λίστα εγκατεστημένων. Μετά την επεξεργασία, το αποτέλεσμα αποθηκεύεται ξανά στη βιβλιοθήκη και το αρχικό αρχείο παραμένει διαθέσιμο για επαναφορά.

Αυτή η αρχιτεκτονική λύνει το βασικό πρόβλημα εμπειρίας χρήστη: δεν χρειάζεται εναλλαγή μεταξύ εφαρμογών, εξαγωγή και εισαγωγή εικόνων ή παρακολούθηση εκδόσεων. Σύμφωνα με το WWDC 2025, όλες οι επεκτάσεις λειτουργούν σε απομονωμένη διεργασία με δικό τους sandbox και περιορισμένο χρόνο εκτέλεσης — έως 30 δευτερόλεπτα ανά λειτουργία επεξεργασίας.

Η επέκταση δεν έχει πρόσβαση σε αυθαίρετα αρχεία στη μνήμη της συσκευής — μόνο στη φωτογραφία που ο χρήστης παρέδωσε ρητά μέσω της διεπαφής επιλογής. Αυτό διασφαλίζει την ασφάλεια των δεδομένων χρήστη κατά τη χρήση εργαλείων τρίτων.

PhotoKit: αρχιτεκτονική και βασικά στοιχεία

PhotoKit — είναι το πλαίσιο της Apple για εργασία με τη βιβλιοθήκη πολυμέσων της συσκευής, που εμφανίστηκε στο iOS 8. Παρέχει προγραμματιστική πρόσβαση σε πόρους Φωτογραφιών, συμπεριλαμβανομένων φωτογραφιών, βίντεο, άλμπουμ και μεταδεδομένων. Για επεκτάσεις επεξεργασίας, το PhotoKit λειτουργεί ως ενδιάμεσο επίπεδο μεταξύ αποθήκευσης και διεπαφής τροποποίησης.

PHAsset και PHAssetResource

PHAsset αντιπροσωπεύει ένα μεμονωμένο αντικείμενο πολυμέσων στη βιβλιοθήκη — μια φωτογραφία ή βίντεο. Μέσω του PHAsset μπορούν να ληφθούν μεταδεδομένα: ημερομηνία λήψης, τύπος αρχείου, τοποθεσία στο χάρτη και προσανατολισμός κάμερας. Το PHAssetResource παρέχει πρόσβαση σε βασικούς πόρους — για παράδειγμα, στο αρχικό αρχείο φωτογραφίας σε μορφή RAW ή HEIC.

Για την επέκταση επεξεργασίας, το PHContentEditingInput είναι κρίσιμο — ένα αντικείμενο που περιέχει το πλήρες αρχείο εικόνας (ή βίντεο) διαθέσιμο για ανάγνωση και επεξεργασία. Η επέκταση λαμβάνει αυτό το αντικείμενο τη στιγμή της ενεργοποίησης και το χρησιμοποιεί ως αρχικό υλικό.

PHImageManager και προσωρινή αποθήκευση

PHImageManager διαχειρίζεται τη φόρτωση και προσωρινή αποθήκευση εικόνων. Για την επέκταση επεξεργασίας δεν χρησιμοποιείται άμεσα — η επέκταση λαμβάνει το πλήρες αρχείο μέσω PHContentEditingInput. Ωστόσο, το PHImageRequestOptions επιτρέπει τη διαμόρφωση παραμέτρων αιτήματος: μέγεθος, τύπο παράδοσης (σύγχρονο ή ασύγχρονο) και μορφή αποτελέσματος.

Σύμφωνα με την Apple, το PHImageManager αποθηκεύει αυτόματα μικρογραφίες εικόνων στη μνήμη RAM, γεγονός που επιταχύνει την εκ νέου εμφάνιση προεπισκοπήσεων. Για την επέκταση επεξεργασίας συνιστάται η χρήση PHImageRequestOptionsDeliveryModeHighQualityFormat για την επίτευξη της καλύτερης ποιότητας εικόνας.

swift
let options = PHImageRequestOptions()
options.deliveryMode = .highQualityFormat
options.isSynchronous = true

PHImageManager.default().requestImage(
    for: asset,
    targetSize: .init(width: 1024, height: 1024),
    contentMode: .aspectFill,
    options: options
) { image, _ in
    // χρησιμοποιήστε την εικόνα για εμφάνιση
}

Δημιουργία επέκτασης: PHContentEditingController

Κάθε Photo Editing Extension υλοποιεί το πρωτόκολλο PHContentEditingController — το κεντρικό στοιχείο ελέγχου της επέκτασης. Το πρωτόκολλο ορίζει μεθόδους για εμφάνιση διεπαφής, λήψη δεδομένων εισόδου και αποθήκευση αποτελέσματος.

Βασικές μέθοδοι του πρωτοκόλλου

beginContentEditing(with:) καλείται κατά την έναρξη της συνεδρίας επεξεργασίας. Η επέκταση λαμβάνει PHContentEditingInput και πρέπει να εμφανίσει τη διεπαφή με την αρχική εικόνα. finishContentEditing(completionHandler:) ολοκληρώνει την επεξεργασία — η επέκταση επιστρέφει PHContentEditingOutput με το τροποποιημένο αρχείο και AdjustmentData. cancelContentEditing() ακυρώνει τις αλλαγές χωρίς αποθήκευση.

Σημαντική λεπτομέρεια: τη στιγμή της κλήσης beginContentEditing, η επέκταση έχει πρόσβαση μόνο σε μία έκδοση της φωτογραφίας — αυτήν που ζήτησε ο χρήστης. Δεν μπορεί να αποκτήσει πρόσβαση σε άλλη φωτογραφία ή άλμπουμ. Αυτός είναι περιορισμός sandbox που εισήχθη από την Apple για ασφάλεια.

swift
class PhotoEditingViewController: UIViewController {

    override func beginContentEditing(
        with input: PHContentEditingInput
    ) {
        guard let url = input.fullSizeImageURL else { return }
        let image = CIImage(contentsOf: url)
        displayImage.image = UIImage(ciImage: image)
    }
}

Αρχιτεκτονική διαχωρισμού

PHContentEditingController διαχωρίζει τη διεπαφή επεξεργασίας από τη λογική αποθήκευσης. Η κύρια διεργασία iOS καλεί beginContentEditing, η επέκταση εμφανίζει το UI της, ο χρήστης κάνει αλλαγές, στη συνέχεια το finishContentEditing δημιουργεί ένα νέο αρχείο. Η Apple συνιστά όλη η επεξεργασία έντασης πόρων — φίλτρα CIFilter, χειρισμοί Core Image — να εκτελείται σε νήμα παρασκηνίου, όχι στο κύριο νήμα, για να μην μπλοκάρεται η διεπαφή.

Μη καταστροφική επεξεργασία μέσω AdjustmentData

PHAdjustmentData — ο βασικός μηχανισμός που εξασφαλίζει μη καταστροφική επεξεργασία στο Photo Editing Extension. Είναι ένα αντικείμενο που περιέχει πληροφορίες σχετικά με τις εφαρμοσμένες αλλαγές σε αυθαίρετη μορφή. Η επέκταση σειριοποιεί τις παραμέτρους φίλτρων, μάσκες και ρυθμίσεις σε AdjustmentData και τις αποθηκεύει μαζί με την τροποποιημένη εικόνα.

Κατά το άνοιγμα της φωτογραφίας ξανά, η επέκταση διαβάζει το AdjustmentData, επαναφέρει την προηγούμενη κατάσταση διεπαφής και επιτρέπει στον χρήστη να συνεχίσει την επεξεργασία από το ίδιο σημείο. Εάν η επέκταση δεν είναι εγκατεστημένη — η φωτογραφία εμφανίζεται στην τελευταία αποθηκευμένη έκδοση και το πρωτότυπο αποθηκεύεται ξεχωριστά.

Σύμφωνα με το Apple Documentation, το PHAdjustmentData αποθηκεύει formatIdentifier και formatVersion — συμβολοσειρές για αναγνώριση μορφής δεδομένων. Κατά την ενημέρωση της επέκτασης, θα πρέπει να ελέγχεται η έκδοση και να γίνεται σωστή επεξεργασία παλαιών μορφών.

swift
let adjustmentData = PHAdjustmentData(
    formatIdentifier: "com.example.photoediting",
    formatVersion: "1.0",
    data: NSKeyedArchiver.archivedData(
        withRootObject: params,
        requiringSecureCoding: true
    )
)
output.adjustmentData = adjustmentData

Τη στιγμή του finishContentEditing, η επέκταση γράφει το AdjustmentData στο αντικείμενο PHContentEditingOutput μαζί με το τροποποιημένο αρχείο εικόνας. Το σύστημα στη συνέχεια αποθηκεύει και τα δύο στοιχεία: την έκδοση για εμφάνιση και τα μεταδεδομένα για επαναφορά της συνεδρίας επεξεργασίας.

Ενσωμάτωση με την εφαρμογή Φωτογραφίες

Το Photo Editing Extension εμφανίζεται αυτόματα στο μενού της εφαρμογής Φωτογραφίες μετά την εγκατάσταση της εφαρμογής που το περιέχει. Ο χρήστης ανοίγει μια φωτογραφία, επιλέγει «Επεξεργασία» και στην κάτω σειρά εργαλείων εμφανίζονται όλες οι εγκατεστημένες επεκτάσεις επεξεργασίας — τόσο συστήματος όσο και τρίτων.

Καταχώρηση επέκτασης

Η επέκταση καταχωρείται μέσω του Info.plist της κύριας εφαρμογής με το κλειδί NSExtensionActivationRule, το οποίο καθορίζει ποιοι τύποι περιεχομένου ενεργοποιούν την επέκταση. Για έναν επεξεργαστή φωτογραφιών, το ActivationRule συνήθως απαιτεί image — η επέκταση δεν θα εμφανίζεται για βίντεο ή ζωντανές φωτογραφίες.

Η Apple συνιστά τον καθορισμό συγκεκριμένων τύπων ενεργοποίησης για να μην υπερφορτώνεται το μενού επεξεργασίας. Εάν η επέκταση υποστηρίζει μόνο JPEG και HEIC, αξίζει να περιορίσετε την ενεργοποίηση σε αυτές τις μορφές.

xml
<!-- Info.plist -->
<key>NSExtension</key>
<dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.photo-editing</string>
    <key>NSExtensionActivationRule</key>
    <string>SUBQUERY (extensionItems,
        @count <= 1)</string>
</dict>

Αλληλεπίδραση με τον χρήστη

Μετά την επιλογή της επέκτασης, το iOS δημιουργεί μια ξεχωριστή διεργασία με ένα προσαρμοσμένο UIViewController που εμφανίζεται πάνω από τη διεπαφή Φωτογραφιών. Ο χρήστης βλέπει τη φωτογραφία του, τα εργαλεία της επέκτασης και τα κουμπιά «Ακύρωση» / «Τέλος». Η επέκταση δεν μπορεί να αλλάξει την πλοήγηση εκτός του ελεγκτή της ούτε να αποκτήσει πρόσβαση σε άλλα μέρη του συστήματος.

Σύμφωνα με το Human Interface Guidelines της Apple, η διεπαφή της επέκτασης πρέπει να είναι ελάχιστη και λειτουργική — χωρίς διαφημίσεις, εξωτερικούς συνδέσμους και περιττά στοιχεία πλοήγησης. Συνιστάται η χρήση UIScrollView για την εμφάνιση της παλέτας εργαλείων, ώστε να μην γεμίζει η οθόνη.

Συχνές Ερωτήσεις

Πώς αποκτά πρόσβαση το Photo Editing Extension στη φωτογραφία;

Η επέκταση λαμβάνει PHContentEditingInput με το URL του πλήρους αρχείου εικόνας μέσω της μεθόδου beginContentEditing(with:). Η πρόσβαση παρέχεται μόνο σε μία επιλεγμένη φωτογραφία — χωρίς δικαιώματα σε άλλους πόρους της βιβλιοθήκης.

Μπορεί η επέκταση να αλλάξει το πρωτότυπο της φωτογραφίας;

Όχι, το πρωτότυπο δεν αλλάζει ποτέ. Η επέκταση δημιουργεί μια νέα έκδοση μέσω PHContentEditingOutput και το AdjustmentData αποθηκεύει τις παραμέτρους αλλαγών για δυνατότητα επαναφοράς στην αρχική κατάσταση.

Ποιους τύπους αρχείων υποστηρίζει το Photo Editing Extension;

Η επέκταση λειτουργεί με όλες τις μορφές που υποστηρίζει το PhotoKit: JPEG, HEIC, RAW, PNG, TIFF και Live Photos. Οι περιορισμοί ορίζονται μέσω NSExtensionActivationRule στο Info.plist της επέκτασης.

Πόσος χρόνος δίνεται για επεξεργασία;

Το iOS διαθέτει έως 30 δευτερόλεπτα για την εκτέλεση της λειτουργίας finishContentEditing. Σε περίπτωση υπέρβασης του ορίου, η επέκταση τερματίζεται αναγκαστικά και οι αλλαγές δεν αποθηκεύονται. Η επεξεργασία παρασκηνίου με CIFilter δεν παρατείνει αυτόν τον χρόνο.

Μπορούν να χρησιμοποιηθούν Core Image και Metal στην επέκταση;

Ναι, τα Core Image (CIFilter) και Metal (για προσαρμοσμένα shaders) υποστηρίζονται πλήρως. Η Apple συνιστά τη μεταφορά βαρέων υπολογισμών σε νήματα παρασκηνίου μέσω του Grand Central Dispatch.

Σύνοψη

  • Photo Editing Extension — είναι ένα ενσωματωμένο εργαλείο επεξεργασίας στην εφαρμογή Φωτογραφίες που λειτουργεί χωρίς εναλλαγή μεταξύ εφαρμογών
  • Η αρχιτεκτονική χρησιμοποιεί PHContentEditingController για διαχείριση της συνεδρίας επεξεργασίας και λήψη δεδομένων εισόδου
  • PhotoKit παρέχει PHAsset, PHImageManager και PHContentEditingInput για πρόσβαση σε πόρους πολυμέσων της συσκευής
  • PHAdjustmentData εξασφαλίζει μη καταστροφική επεξεργασία — σειριοποίηση παραμέτρων αλλαγών με δυνατότητα επαναφοράς
  • Η επέκταση λειτουργεί σε sandbox με όριο 30 δευτερολέπτων και πρόσβαση μόνο σε μία φωτογραφία ανά συνεδρία
  • Υποστηρίζονται Core Image, Metal και όλες οι μορφές PhotoKit: JPEG, HEIC, RAW, PNG, TIFF και Live Photos

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης