Photo Editing Extension: mi ez, a bővítmény képességei iOS-hez

Szerző: IT Sectr Megjelenés: 2026-06-15 Olvasási idő: 9 perc

Photo Editing Extension — egy iOS-mechanizmus, amely lehetővé teszi harmadik fél alkalmazásai számára, hogy szerkesztőeszközöket adjanak hozzá közvetlenül a rendszer Fotók alkalmazásához. A teljes értékű szerkesztőkkel ellentétben a bővítmény nem tölti be a képet egy külön alkalmazásba — a felhasználó szűrőket alkalmaz, színeket korrigál vagy effekteket ad hozzá anélkül, hogy elhagyná a szabványos felületet. Az Apple Developer Documentation (2025) szerint a PhotoKit több mint 40 API-t biztosít a fénykép-erőforrásokkal való munkához, beleértve a PHAdjustmentData és PHContentEditingController elemeket.

Főbb pontok

  • Photo Editing Extension szerkesztőeszközöket ágyaz be a szabványos Fotók alkalmazásba iOS-ben programok közötti váltás nélkül
  • Az architektúra a PHContentEditingController protokollra épül, amely kezeli a felület megjelenítését és az eredeti kép lekérését
  • A bővítmény nem romboló szerkesztést használ — minden változtatás AdjustmentData-ként kerül mentésre, az eredeti pedig érintetlen marad
  • A képpel való munkához a bővítmény PHContentEditingInput-ot kap a teljes fényképfájllal és metaadatokkal
  • PhotoKit hozzáférést biztosít a fénykép-erőforrásokhoz PHAsset, PHAssetResource és PHImageManager segítségével

Mi az a Photo Editing Extension iOS-ben

Photo Editing Extension — egy app extension típus iOS-ben, amely képfeldolgozó eszközöket vezet be a Fotók alkalmazás szabványos felületébe. A felhasználó megnyit egy fényképet, megnyomja a „Szerkesztés” gombot, és kiválasztja a kívánt bővítményt a telepítettek listájából. Szerkesztés után az eredmény visszakerül a könyvtárba, az eredeti fájl pedig elérhető marad a visszaállításhoz.

Ez az architektúra megoldja a felhasználói élmény kulcsproblémáját: nem kell alkalmazások között váltani, képeket exportálni és importálni, vagy verziókat követni. A WWDC 2025 szerint minden bővítmény elkülönített folyamatban működik saját homokozóval és korlátozott végrehajtási idővel — legfeljebb 30 másodperc szerkesztési műveletenként.

A bővítmény nem fér hozzá tetszőleges fájlokhoz a készülék memóriájában — csak ahhoz a fényképhez, amelyet a felhasználó kifejezetten továbbított a kiválasztási felületen keresztül. Ez biztosítja a felhasználói adatok biztonságát harmadik fél eszközeinek használatakor.

PhotoKit: architektúra és kulcsfontosságú komponensek

PhotoKit — az Apple keretrendszere a készülék médiatárával való munkához, amely az iOS 8-ban jelent meg. Programozott hozzáférést biztosít a Fotók erőforrásaihoz, beleértve a fényképeket, videókat, albumokat és metaadatokat. A szerkesztő bővítmények számára a PhotoKit közbenső rétegként szolgál a tároló és a módosítási felület között.

PHAsset és PHAssetResource

PHAsset egy egyedi médiaobjektumot képvisel a könyvtárban — egy fényképet vagy videót. A PHAsset segítségével metaadatok nyerhetők: a felvétel dátuma, fájltípus, helyszín a térképen és kamera orientáció. A PHAssetResource hozzáférést biztosít az alapvető erőforrásokhoz — például az eredeti fényképfájlhoz RAW vagy HEIC formátumban.

A szerkesztő bővítmény számára kritikus fontosságú a PHContentEditingInput — egy objektum, amely a teljes képfájlt (vagy videofájlt) tartalmazza, olvasásra és feldolgozásra elérhetően. A bővítmény ezt az objektumot az aktiválás pillanatában kapja meg, és forrásanyagként használja.

PHImageManager és gyorsítótárazás

PHImageManager kezeli a képek betöltését és gyorsítótárazását. A szerkesztő bővítmény számára nem közvetlenül használatos — a bővítmény a teljes fájlt a PHContentEditingInput segítségével kapja meg. A PHImageRequestOptions azonban lehetővé teszi a kérés paramétereinek konfigurálását: méret, szállítási típus (szinkron vagy aszinkron) és eredményformátum.

Az Apple szerint a PHImageManager automatikusan gyorsítótárazza a képek miniatűrjeit a RAM-ban, ami felgyorsítja az előnézetek újbóli megjelenítését. A szerkesztő bővítmény számára ajánlott a PHImageRequestOptionsDeliveryModeHighQualityFormat használata a legjobb képminőség elérése érdekében.

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
    // használja a képet megjelenítéshez
}

Bővítmény létrehozása: PHContentEditingController

Minden Photo Editing Extension megvalósítja a PHContentEditingController protokollt — a bővítmény központi vezérlő elemét. A protokoll meghatározza a felület megjelenítésének, a bemeneti adatok lekérésének és az eredmény mentésének metódusait.

A protokoll fő metódusai

beginContentEditing(with:) a szerkesztési munkamenet indításakor hívódik meg. A bővítmény megkapja a PHContentEditingInput-ot, és meg kell jelenítenie a felületet az eredeti képpel. finishContentEditing(completionHandler:) befejezi a szerkesztést — a bővítmény visszaadja a PHContentEditingOutput-ot a módosított fájllal és AdjustmentData-val. cancelContentEditing() mentés nélkül megszakítja a változtatásokat.

Fontos árnyalat: a beginContentEditing meghívásának pillanatában a bővítmény csak a fénykép egy verziójához fér hozzá — ahhoz, amelyet a felhasználó kért. Nem lehet hozzáférni másik fényképhez vagy albumhoz. Ez az Apple által a biztonság érdekében bevezetett homokozó-korlátozás.

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

Elválasztási architektúra

PHContentEditingController elválasztja a szerkesztési felületet a mentési logikától. A fő iOS-folyamat meghívja a beginContentEditing-et, a bővítmény megjeleníti a saját UI-ját, a felhasználó változtatásokat végez, majd a finishContentEditing új fájlt generál. Az Apple azt ajánlja, hogy az összes erőforrás-igényes feldolgozást — CIFilter szűrőket, Core Image manipulációkat — háttérszálon végezzék, ne a főszálon, hogy ne blokkolják a felületet.

Nem romboló szerkesztés AdjustmentData segítségével

PHAdjustmentData — a kulcsmechanizmus, amely lehetővé teszi a nem romboló szerkesztést a Photo Editing Extension-ben. Ez egy objektum, amely az alkalmazott változtatásokról tartalmaz információkat tetszőleges formátumban. A bővítmény szerializálja a szűrők paramétereit, maszkokat és beállításokat az AdjustmentData-ba, és elmenti azokat a módosított képpel együtt.

A fénykép újbóli megnyitásakor a bővítmény beolvassa az AdjustmentData-t, visszaállítja a felület előző állapotát, és lehetővé teszi a felhasználónak, hogy ugyanott folytassa a szerkesztést. Ha a bővítmény nincs telepítve — a fénykép az utolsó mentett verzióban jelenik meg, az eredeti pedig külön tárolódik.

Az Apple Documentation szerint a PHAdjustmentData tárolja a formatIdentifier és formatVersion értékeket — karakterláncokat az adatformátum azonosításához. A bővítmény frissítésekor ellenőrizni kell a verziót és helyesen kell kezelni a régi formátumokat.

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

A finishContentEditing pillanatában a bővítmény az AdjustmentData-t a PHContentEditingOutput objektumba írja a módosított képfájllal együtt. A rendszer ezután mindkét komponenst elmenti: a verziót a megjelenítéshez és a metaadatokat a szerkesztési munkamenet visszaállításához.

Integráció a Fotók alkalmazással

A Photo Editing Extension automatikusan megjelenik a Fotók alkalmazás menüjében a tartalmazó alkalmazás telepítése után. A felhasználó megnyit egy fényképet, kiválasztja a „Szerkesztés” lehetőséget, és az alsó eszközsorban megjelennek az összes telepített szerkesztő bővítmény — mind a rendszer-, mind a harmadik fél által készítettek.

A bővítmény regisztrációja

A bővítmény a fő alkalmazás Info.plist fájlján keresztül regisztrálódik a NSExtensionActivationRule kulccsal, amely meghatározza, hogy milyen tartalomtípusok aktiválják a bővítményt. Egy fényképszerkesztő esetében az ActivationRule általában image-t igényel — a bővítmény nem jelenik meg videók vagy élő fényképek esetén.

Az Apple azt ajánlja, hogy konkrét aktiválási típusokat adjon meg a szerkesztési menü túlterhelésének elkerülése érdekében. Ha a bővítmény csak JPEG és HEIC formátumokat támogat, érdemes az aktiválást ezekre a formátumokra korlátozni.

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>

Interakció a felhasználóval

A bővítmény kiválasztása után az iOS egy külön folyamatot hoz létre egy egyéni UIViewController-rel, amely a Fotók felület felett jelenik meg. A felhasználó látja a fényképét, a bővítmény eszközeit, valamint a „Mégse” / „Kész” gombokat. A bővítmény nem változtathatja meg a navigációt a vezérlőjén kívül, és nem férhet hozzá a rendszer más részeihez.

Az Apple Human Interface Guidelines szerint a bővítmény felületének minimálisnak és funkcionálisnak kell lennie — reklámok, külső linkek és felesleges navigációs elemek nélkül. Ajánlott a UIScrollView használata az eszközpaletta megjelenítéséhez, hogy ne zsúfolja össze a képernyőt.

Gyakran Ismételt Kérdések

Hogyan kap hozzáférést a Photo Editing Extension a fényképhez?

A bővítmény PHContentEditingInput-ot kap a teljes képfájl URL-jével a beginContentEditing(with:) metóduson keresztül. Hozzáférés csak egy kiválasztott fényképhez biztosított — jogosultság nélkül a könyvtár egyéb erőforrásaihoz.

Megváltoztathatja a bővítmény a fénykép eredeti példányát?

Nem, az eredeti soha nem változik meg. A bővítmény egy új verziót hoz létre a PHContentEditingOutput segítségével, az AdjustmentData pedig tárolja a változtatások paramétereit az eredeti állapot visszaállításának lehetőségéhez.

Milyen fájltípusokat támogat a Photo Editing Extension?

A bővítmény minden formátummal működik, amelyet a PhotoKit támogat: JPEG, HEIC, RAW, PNG, TIFF és Live Photos. A korlátozásokat a bővítmény Info.plist fájljában lévő NSExtensionActivationRule segítségével állítják be.

Mennyi idő áll rendelkezésre a szerkesztésre?

Az iOS legfeljebb 30 másodpercet biztosít a finishContentEditing művelet végrehajtására. A határ túllépése esetén a bővítmény kényszerűen befejeződik, és a változtatások nem kerülnek mentésre. A CIFilter-rel végzett háttérfeldolgozás nem hosszabbítja meg ezt az időt.

Használható a Core Image és a Metal a bővítményben?

Igen, a Core Image (CIFilter) és a Metal (egyéni shaderekhez) teljes mértékben támogatott. Az Apple azt ajánlja, hogy a nehéz számításokat a Grand Central Dispatch segítségével helyezze át háttérszálakra.

Összefoglalás

  • Photo Editing Extension — egy beágyazott szerkesztőeszköz a Fotók alkalmazásban, amely alkalmazások közötti váltás nélkül működik
  • Az architektúra a PHContentEditingController-t használja a szerkesztési munkamenet kezeléséhez és a bemeneti adatok lekéréséhez
  • PhotoKit biztosítja a PHAsset, PHImageManager és PHContentEditingInput elemeket a készülék média-erőforrásaihoz való hozzáféréshez
  • PHAdjustmentData nem romboló szerkesztést biztosít — a változtatási paraméterek szerializálása visszaállítási lehetőséggel
  • A bővítmény homokozóban működik 30 másodperces korlátozással és munkamenetenként csak egy fényképhez való hozzáféréssel
  • Támogatott a Core Image, Metal és az összes PhotoKit formátum: JPEG, HEIC, RAW, PNG, TIFF és Live Photos

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is