Photo Editing Extension: wat het is, mogelijkheden van de extensie voor iOS

Auteur: IT Sectr Gepubliceerd: 2026-06-15 Leestijd: 9 min

Photo Editing Extension — is een iOS-mechanisme waarmee externe apps bewerkingstools direct in de systeemapp Foto kunnen toevoegen. In tegenstelling tot volwaardige editors laadt de extensie de afbeelding niet in een aparte app — de gebruiker past filters toe, corrigeert kleuren of voegt effecten toe zonder de standaardinterface te verlaten. Volgens Apple Developer Documentation (2025) biedt PhotoKit meer dan 40 API's voor het werken met fotobronnen, waaronder PHAdjustmentData en PHContentEditingController.

Belangrijkste punten

  • Photo Editing Extension integreert bewerkingstools in de standaard Foto-app op iOS zonder tussen apps te schakelen
  • De architectuur is gebaseerd op het protocol PHContentEditingController, dat het weergeven van de interface en het ophalen van de originele afbeelding beheert
  • De extensie gebruikt niet-destructieve bewerking — alle wijzigingen worden opgeslagen als AdjustmentData en het origineel blijft onaangetast
  • Voor het werken met de afbeelding ontvangt de extensie PHContentEditingInput met het volledige foto-bestand en metadata
  • PhotoKit biedt toegang tot fotobronnen via PHAsset, PHAssetResource en PHImageManager

Wat is Photo Editing Extension in iOS

Photo Editing Extension — is een type app-extensie in iOS dat bewerkingstools voor afbeeldingen in de standaardinterface van de Foto-app introduceert. De gebruiker opent een foto, drukt op de knop „Bewerk” en selecteert de gewenste extensie uit de lijst met geïnstalleerde extensies. Na het bewerken wordt het resultaat terug opgeslagen in de bibliotheek en blijft het originele bestand beschikbaar voor herstel.

Deze architectuur lost het belangrijkste probleem van de gebruikerservaring op: je hoeft niet tussen apps te schakelen, afbeeldingen te exporteren en importeren of versies bij te houden. Volgens WWDC 2025 werken alle extensies in een geïsoleerd proces met een eigen sandbox en beperkte uitvoeringstijd — tot 30 seconden per bewerkingsoperatie.

De extensie heeft geen toegang tot willekeurige bestanden in het geheugen van het apparaat — alleen tot de foto die de gebruiker expliciet heeft doorgegeven via de selectie-interface. Dit waarborgt de veiligheid van gebruikersgegevens bij het gebruik van externe tools.

PhotoKit: architectuur en belangrijkste componenten

PhotoKit — is het Apple-framework voor het werken met de mediatheek van het apparaat, geïntroduceerd in iOS 8. Het biedt programmatische toegang tot Fotobronnen, waaronder foto's, video's, albums en metadata. Voor bewerkingsextensies fungeert PhotoKit als een tussenlaag tussen de opslag en de modificatie-interface.

PHAsset en PHAssetResource

PHAsset vertegenwoordigt een afzonderlijk mediaobject in de bibliotheek — een foto of video. Via PHAsset kunnen metadata worden verkregen: opnamedatum, bestandstype, locatie op de kaart en camera-orientatie. PHAssetResource geeft toegang tot de basisbronnen — bijvoorbeeld het originele fotobestand in RAW- of HEIC-formaat.

Voor de bewerkingsextensie is PHContentEditingInput van cruciaal belang — een object dat het volledige afbeeldingsbestand (of videobestand) bevat dat beschikbaar is om te lezen en te verwerken. De extensie ontvangt dit object op het moment van activering en gebruikt het als bronmateriaal.

PHImageManager en caching

PHImageManager beheert het laden en cachen van afbeeldingen. Voor de bewerkingsextensie wordt het niet direct gebruikt — de extensie ontvangt het volledige bestand via PHContentEditingInput. PHImageRequestOptions maakt het echter mogelijk om de aanvraagparameters te configureren: grootte, leveringstype (synchroon of asynchroon) en resultaatformaat.

Volgens Apple cached PHImageManager automatisch miniatuurafbeeldingen in het RAM-geheugen, wat het opnieuw weergeven van voorbeelden versnelt. Voor de bewerkingsextensie wordt aanbevolen PHImageRequestOptionsDeliveryModeHighQualityFormat te gebruiken om de beste beeldkwaliteit te verkrijgen.

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
    // gebruik afbeelding voor weergave
}

Een extensie maken: PHContentEditingController

Elke Photo Editing Extension implementeert het protocol PHContentEditingController — het centrale besturingselement van de extensie. Het protocol definieert methoden voor het weergeven van de interface, het verkrijgen van invoergegevens en het opslaan van het resultaat.

Belangrijkste methoden van het protocol

beginContentEditing(with:) wordt aangeroepen bij het starten van een bewerkingssessie. De extensie ontvangt PHContentEditingInput en moet de interface met de originele afbeelding weergeven. finishContentEditing(completionHandler:) voltooit de bewerking — de extensie retourneert PHContentEditingOutput met het gewijzigde bestand en AdjustmentData. cancelContentEditing() annuleert wijzigingen zonder opslaan.

Een belangrijke nuance: op het moment van aanroepen van beginContentEditing heeft de extensie alleen toegang tot één versie van de foto — degene die door de gebruiker is aangevraagd. Toegang tot een andere foto of album is niet mogelijk. Dit is een sandbox-beperking die door Apple is ingevoerd voor de veiligheid.

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)
    }
}

Scheidingsarchitectuur

PHContentEditingController scheidt de bewerkingsinterface van de opslaglogica. Het hoofd-iOS-proces roept beginContentEditing aan, de extensie toont zijn UI, de gebruiker voert wijzigingen door, waarna finishContentEditing een nieuw bestand genereert. Apple raadt aan om alle resource-intensieve verwerking — CIFilter-filters, Core Image-manipulaties — op de achtergrond uit te voeren, niet in de hoofdthread, om de interface niet te blokkeren.

Niet-destructieve bewerking via AdjustmentData

PHAdjustmentData — het belangrijkste mechanisme dat niet-destructieve bewerking in Photo Editing Extension mogelijk maakt. Dit is een object dat informatie over toegepaste wijzigingen bevat in een willekeurig formaat. De extensie serialiseert filterparameters, maskers en instellingen in AdjustmentData en slaat ze samen met de gewijzigde afbeelding op.

Bij het opnieuw openen van de foto leest de extensie AdjustmentData, herstelt de vorige interface-status en stelt de gebruiker in staat de bewerking vanaf dezelfde plek voort te zetten. Als de extensie niet is geïnstalleerd — wordt de foto weergegeven in de laatst opgeslagen versie en wordt het origineel apart bewaard.

Volgens Apple Documentation slaat PHAdjustmentData formatIdentifier en formatVersion op — strings voor identificatie van het dataformaat. Bij het updaten van de extensie moet de versie worden gecontroleerd en moeten oude formaten correct worden verwerkt.

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

Op het moment van finishContentEditing schrijft de extensie AdjustmentData naar het PHContentEditingOutput-object samen met het gewijzigde afbeeldingsbestand. Het systeem slaat vervolgens beide componenten op: de versie voor weergave en de metadata voor het herstellen van de bewerkingssessie.

Integratie met de Foto-app

Photo Editing Extension verschijnt automatisch in het menu van de Foto-app na installatie van de app die het bevat. De gebruiker opent een foto, selecteert „Bewerk” en in de onderste rij met tools worden alle geïnstalleerde bewerkingsextensies weergegeven — zowel systeem- als externe.

Registratie van de extensie

De extensie wordt geregistreerd via de Info.plist van de hoofd-app met de sleutel NSExtensionActivationRule, die aangeeft welke soorten inhoud de extensie activeren. Voor een foto-editor vereist ActivationRule meestal image — de extensie wordt niet weergegeven voor video's of live foto's.

Apple raadt aan om specifieke activeringstypen op te geven om het bewerkingsmenu niet te overbelasten. Als de extensie alleen JPEG en HEIC ondersteunt, is het verstandig om de activering tot deze formaten te beperken.

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>

Interactie met de gebruiker

Na selectie van de extensie maakt iOS een apart proces aan met een aangepaste UIViewController die boven de Foto-interface wordt weergegeven. De gebruiker ziet zijn foto, de tools van de extensie en de knoppen „Annuleer” / „Gereed”. De extensie kan de navigatie buiten zijn controller niet wijzigen of toegang krijgen tot andere delen van het systeem.

Volgens de Human Interface Guidelines van Apple moet de interface van de extensie minimaal en functioneel zijn — zonder advertenties, externe links en overbodige navigatie-elementen. Het wordt aanbevolen om UIScrollView te gebruiken voor het weergeven van het toolpalet om het scherm niet te overbelasten.

Veelgestelde vragen

Hoe krijgt Photo Editing Extension toegang tot de foto?

De extensie ontvangt PHContentEditingInput met de URL van het volledige afbeeldingsbestand via de methode beginContentEditing(with:). Toegang wordt alleen verleend tot één geselecteerde foto — zonder rechten op andere bronnen in de bibliotheek.

Kan de extensie het origineel van de foto wijzigen?

Nee, het origineel wordt nooit gewijzigd. De extensie maakt een nieuwe versie via PHContentEditingOutput en AdjustmentData slaat de wijzigingsparameters op voor de mogelijkheid om terug te keren naar de oorspronkelijke staat.

Welke bestandstypen ondersteunt Photo Editing Extension?

De extensie werkt met alle formaten die PhotoKit ondersteunt: JPEG, HEIC, RAW, PNG, TIFF en Live Photos. Beperkingen worden ingesteld via NSExtensionActivationRule in de Info.plist van de extensie.

Hoeveel tijd is er voor bewerking?

iOS wijst tot 30 seconden toe voor het uitvoeren van de finishContentEditing-operatie. Bij overschrijding van de limiet wordt de extensie geforceerd beëindigd en worden wijzigingen niet opgeslagen. Achtergrondverwerking met CIFilter verlengt deze tijd niet.

Kunnen Core Image en Metal in de extensie worden gebruikt?

Ja, Core Image (CIFilter) en Metal (voor aangepaste shaders) worden volledig ondersteund. Apple raadt aan om zware berekeningen via Grand Central Dispatch naar achtergrondthreads te verplaatsen.

Samenvatting

  • Photo Editing Extension — is een ingebouwde bewerkingstool in de Foto-app die werkt zonder tussen apps te schakelen
  • De architectuur gebruikt PHContentEditingController voor het beheren van de bewerkingssessie en het verkrijgen van invoergegevens
  • PhotoKit biedt PHAsset, PHImageManager en PHContentEditingInput voor toegang tot de mediabronnen van het apparaat
  • PHAdjustmentData zorgt voor niet-destructieve bewerking — serialisatie van wijzigingsparameters met herstelmogelijkheid
  • De extensie werkt in een sandbox met een limiet van 30 seconden en toegang tot slechts één foto per sessie
  • Core Image, Metal en alle PhotoKit-formaten worden ondersteund: JPEG, HEIC, RAW, PNG, TIFF en Live Photos

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook