Photo Editing Extension: co to je, možnosti rozšíření pro iOS

Autor: IT Sectr Publikováno: 2026-06-15 Doba čtení: 9 min

Photo Editing Extension — je mechanismus iOS, který umožňuje aplikacím třetích stran přidávat nástroje pro úpravy přímo do systémové aplikace Fotky. Na rozdíl od plnohodnotných editorů rozšíření nenačítá snímek do samostatné aplikace — uživatel aplikuje filtry, koriguje barvy nebo přidává efekty, aniž by opouštěl standardní rozhraní. Podle Apple Developer Documentation (2025) poskytuje PhotoKit více než 40 API pro práci s fotografickými zdroji, včetně PHAdjustmentData a PHContentEditingController.

Hlavní body

  • Photo Editing Extension vkládá nástroje pro úpravy do standardní aplikace Fotky na iOS bez přepínání mezi programy
  • Architektura je postavena na protokolu PHContentEditingController, který řídí zobrazení rozhraní a získání původního snímku
  • Rozšíření používá nedestruktivní úpravy — všechny změny jsou uloženy jako AdjustmentData a originál zůstává nedotčen
  • Pro práci s obrázkem získává rozšíření PHContentEditingInput s kompletním souborem snímku a metadaty
  • PhotoKit poskytuje přístup k fotografickým zdrojům přes PHAsset, PHAssetResource a PHImageManager

Co je Photo Editing Extension v iOS

Photo Editing Extension — je typ rozšíření aplikace v iOS, které zavádí nástroje pro zpracování obrázků do standardního rozhraní aplikace Fotky. Uživatel otevře snímek, stiskne tlačítko „Upravit“ a vybere požadované rozšíření ze seznamu nainstalovaných. Po úpravě je výsledek uložen zpět do knihovny a původní soubor zůstává k dispozici pro obnovení.

Taková architektura řeší klíčový problém uživatelské zkušenosti: není třeba přepínat mezi aplikacemi, exportovat a importovat obrázky ani sledovat verze. Podle WWDC 2025 všechna rozšíření pracují v izolovaném procesu s vlastním sandboxem a omezenou dobou provádění — až 30 sekund na operaci úpravy.

Rozšíření nemá přístup k libovolným souborům v paměti zařízení — pouze k tomu snímku, který uživatel explicitně předal přes rozhraní výběru. To zajišťuje bezpečnost uživatelských dat při používání nástrojů třetích stran.

PhotoKit: architektura a klíčové komponenty

PhotoKit — je framework Apple pro práci s mediální knihovnou zařízení, který se objevil v iOS 8. Poskytuje programový přístup ke zdrojům Fotek, včetně snímků, videí, alb a metadat. Pro rozšíření pro úpravy slouží PhotoKit jako mezivrstva mezi úložištěm a rozhraním pro úpravy.

PHAsset a PHAssetResource

PHAsset představuje jednotlivý mediální objekt v knihovně — fotografii nebo video. Prostřednictvím PHAsset lze získat metadata: datum pořízení, typ souboru, polohu na mapě a orientaci kamery. PHAssetResource poskytuje přístup k základním zdrojům — například k původnímu souboru snímku ve formátu RAW nebo HEIC.

Pro rozšíření pro úpravy je kriticky důležitý PHContentEditingInput — objekt, který obsahuje kompletní soubor obrázku (nebo videa) dostupný pro čtení a zpracování. Rozšíření získává tento objekt v okamžiku aktivace a používá jej jako zdrojový materiál.

PHImageManager a ukládání do mezipaměti

PHImageManager spravuje načítání a ukládání obrázků do mezipaměti. Pro rozšíření pro úpravy se nepoužívá přímo — rozšíření získává kompletní soubor přes PHContentEditingInput. PHImageRequestOptions však umožňuje konfigurovat parametry požadavku: velikost, typ doručení (synchronní nebo asynchronní) a formát výsledku.

Podle Apple PHImageManager automaticky ukládá miniatury obrázků do paměti RAM, což urychluje opětovné zobrazení náhledů. Pro rozšíření pro úpravy se doporučuje používat PHImageRequestOptionsDeliveryModeHighQualityFormat pro dosažení nejlepší kvality snímku.

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
    // použijte obrázek pro zobrazení
}

Vytvoření rozšíření: PHContentEditingController

Každé Photo Editing Extension implementuje protokol PHContentEditingController — centrální prvek řízení rozšíření. Protokol definuje metody pro zobrazení rozhraní, získání vstupních dat a uložení výsledku.

Hlavní metody protokolu

beginContentEditing(with:) se volá při spuštění relace úprav. Rozšíření obdrží PHContentEditingInput a musí zobrazit rozhraní s původním obrázkem. finishContentEditing(completionHandler:) dokončí úpravy — rozšíření vrátí PHContentEditingOutput s upraveným souborem a AdjustmentData. cancelContentEditing() zruší změny bez uložení.

Důležitá nuance: v okamžiku volání beginContentEditing má rozšíření přístup pouze k jedné verzi snímku — té, kterou uživatel požadoval. Nelze přistupovat k jinému snímku nebo albu. Toto je omezení sandboxu zavedené Apple pro bezpečnost.

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

Architektura oddělení

PHContentEditingController odděluje rozhraní pro úpravy od logiky ukládání. Hlavní proces iOS volá beginContentEditing, rozšíření zobrazí své UI, uživatel provede změny, poté finishContentEditing vygeneruje nový soubor. Apple doporučuje veškeré náročné zpracování — filtry CIFilter, manipulace s Core Image — provádět na pozadí, nikoli v hlavním vlákně, aby nedocházelo k blokování rozhraní.

Nedestruktivní úpravy pomocí AdjustmentData

PHAdjustmentData — klíčový mechanismus zajišťující nedestruktivní úpravy v Photo Editing Extension. Je to objekt obsahující informace o provedených změnách v libovolném formátu. Rozšíření serializuje parametry filtrů, masky a nastavení do AdjustmentData a ukládá je spolu s upraveným obrázkem.

Při opětovném otevření snímku rozšíření načte AdjustmentData, obnoví předchozí stav rozhraní a umožní uživateli pokračovat v úpravách od stejného místa. Pokud rozšíření není nainstalováno — snímek se zobrazí v poslední uložené verzi a originál je uložen samostatně.

Podle Apple Documentation ukládá PHAdjustmentData formatIdentifier a formatVersion — řetězce pro identifikaci formátu dat. Při aktualizaci rozšíření je třeba zkontrolovat verzi a správně zpracovat staré formáty.

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

V okamžiku finishContentEditing zapisuje rozšíření AdjustmentData do objektu PHContentEditingOutput spolu s upraveným souborem obrázku. Systém poté uloží obě složky: verzi pro zobrazení a metadata pro obnovení relace úprav.

Integrace s aplikací Fotky

Photo Editing Extension se automaticky objeví v nabídce aplikace Fotky po instalaci aplikace, která jej obsahuje. Uživatel otevře snímek, vybere „Upravit“ a ve spodní řadě nástrojů se zobrazí všechna nainstalovaná rozšíření pro úpravy — jak systémová, tak od třetích stran.

Registrace rozšíření

Rozšíření se registruje prostřednictvím Info.plist hlavní aplikace s klíčem NSExtensionActivationRule, který určuje, jaké typy obsahu rozšíření aktivují. Pro editor fotografií ActivationRule obvykle vyžaduje image — rozšíření se nezobrazí pro videa nebo živé fotografie.

Apple doporučuje uvádět konkrétní typy aktivace, aby nedošlo k přetížení nabídky úprav. Pokud rozšíření podporuje pouze JPEG a HEIC, vyplatí se omezit aktivaci na tyto formáty.

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>

Interakce s uživatelem

Po výběru rozšíření iOS vytvoří samostatný proces s vlastním UIViewController, který se zobrazí nad rozhraním Fotek. Uživatel vidí svůj snímek, nástroje rozšíření a tlačítka „Zrušit“ / „Hotovo“. Rozšíření nemůže změnit navigaci mimo svůj controller ani získat přístup k jiným částem systému.

Podle Human Interface Guidelines od Apple by rozhraní rozšíření mělo být minimální a funkční — bez reklam, externích odkazů a zbytečných navigačních prvků. Doporučuje se používat UIScrollView pro zobrazení palety nástrojů, aby nedocházelo k přeplnění obrazovky.

Často kladené otázky

Jak Photo Editing Extension získává přístup ke snímku?

Rozšíření obdrží PHContentEditingInput s URL kompletního souboru obrázku prostřednictvím metody beginContentEditing(with:). Přístup je poskytnut pouze k jednomu vybranému snímku — bez práv k ostatním zdrojům knihovny.

Může rozšíření změnit originál snímku?

Ne, originál není nikdy měněn. Rozšíření vytváří novou verzi prostřednictvím PHContentEditingOutput a AdjustmentData uchovává parametry změn pro možnost návratu k původnímu stavu.

Jaké typy souborů podporuje Photo Editing Extension?

Rozšíření pracuje se všemi formáty, které podporuje PhotoKit: JPEG, HEIC, RAW, PNG, TIFF a Live Photos. Omezení se nastavují prostřednictvím NSExtensionActivationRule v Info.plist rozšíření.

Kolik času je dáno na úpravy?

iOS přiděluje až 30 sekund na provedení operace finishContentEditing. Při překročení limitu je rozšíření násilně ukončeno a změny nejsou uloženy. Zpracování na pozadí s CIFilter tento čas neprodlužuje.

Lze v rozšíření použít Core Image a Metal?

Ano, Core Image (CIFilter) a Metal (pro vlastní shadery) jsou plně podporovány. Apple doporučuje přesouvat náročné výpočty do vláken na pozadí prostřednictvím Grand Central Dispatch.

Shrnutí

  • Photo Editing Extension — je vestavěný nástroj pro úpravy v aplikaci Fotky, který funguje bez přepínání mezi aplikacemi
  • Architektura používá PHContentEditingController pro správu relace úprav a získání vstupních dat
  • PhotoKit poskytuje PHAsset, PHImageManager a PHContentEditingInput pro přístup k mediálním zdrojům zařízení
  • PHAdjustmentData zajišťuje nedestruktivní úpravy — serializaci parametrů změn s možností obnovení
  • Rozšíření pracuje v sandboxu s limitem 30 sekund a přístupem pouze k jednomu snímku za relaci
  • Podporovány jsou Core Image, Metal a všechny formáty PhotoKit: JPEG, HEIC, RAW, PNG, TIFF a Live Photos

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také