Photo Editing Extension: nedir ve iOS için uzantının yetenekleri

Yazar: IT Sectr Yayınlanma: 2026-06-15 Okuma süresi: 9 dk

Photo Editing Extension, üçüncü taraf uygulamaların sistem Fotoğraflar uygulamasına doğrudan düzenleme araçları eklemesine olanak tanıyan bir iOS mekanizmasıdır. Tam özellikli düzenleyicilerin aksine, uzantı fotoğrafı ayrı bir uygulamaya yüklemez — kullanıcı standart arayüzden çıkmadan filtreler uygular, renkleri ayarlar veya efektler ekler. Apple Developer Documentation (2025)'e göre PhotoKit, PHAdjustmentData ve PHContentEditingController dahil olmak üzere fotoğraf kaynaklarıyla çalışmak için 40'tan fazla API sağlar.

Önemli Noktalar

  • Photo Editing Extension, programlar arasında geçiş yapmadan standart iOS Fotoğraflar uygulamasına düzenleme araçları gömer
  • Mimari, arayüz görüntülemesini ve orijinal görselin alınmasını yöneten PHContentEditingController protokolü üzerine kurulmuştur
  • Uzantı tahribatsız düzenleme kullanır — tüm değişiklikler AdjustmentData olarak kaydedilir, orijinal ise bozulmadan kalır
  • Görselle çalışmak için uzantı, tam fotoğraf dosyası ve meta verilerle birlikte PHContentEditingInput alır
  • PhotoKit, PHAsset, PHAssetResource ve PHImageManager aracılığıyla fotoğraf kaynaklarına erişim sağlar

iOS'ta Photo Editing Extension Nedir

Photo Editing Extension, Fotoğraflar uygulamasının standart arayüzüne görüntü işleme araçları gömen bir iOS uygulama uzantısı türüdür. Kullanıcı bir fotoğraf açar, Düzenle düğmesine basar ve yüklü uzantılar listesinden istediği uzantıyı seçer. Düzenlemeden sonra sonuç kitaplığa geri kaydedilir ve orijinal dosya geri almak için kullanılabilir durumda kalır.

Bu mimari, kullanıcı deneyiminin önemli bir sorununu çözer: uygulamalar arasında geçiş yapmaya, görselleri dışa ve içe aktarmaya veya sürümleri takip etmeye gerek yoktur. WWDC 2025'e göre, tüm uzantılar kendi sanal alanları ve sınırlı yürütme süresiyle — düzenleme işlemi başına 30 saniyeye kadar — izole bir süreçte çalışır.

Uzantının cihaz belleğindeki rastgele dosyalara erişimi yoktur — yalnızca kullanıcının seçim arayüzü aracılığıyla açıkça ilettiği fotoğrafa erişebilir. Bu, üçüncü taraf araçları kullanırken kullanıcı verilerinin güvenliğini sağlar.

PhotoKit: Mimari ve Temel Bileşenler

PhotoKit, iOS 8'de tanıtılan cihaz medya kitaplığıyla çalışmak için bir Apple framework'üdür. Görseller, videolar, albümler ve meta veriler dahil olmak üzere Fotoğraflar kaynaklarına programlı erişim sağlar. Düzenleme uzantıları için PhotoKit, depolama ile değişiklik arayüzü arasında bir ara katman görevi görür.

PHAsset ve PHAssetResource

PHAsset, kitaplıktaki tek bir medya nesnesini temsil eder — bir fotoğraf veya video. PHAsset aracılığıyla meta veriler alınabilir: çekim tarihi, dosya türü, haritadaki konum ve kamera yönü. PHAssetResource, temel kaynaklara erişim sağlar — örneğin, RAW veya HEIC formatındaki orijinal fotoğraf dosyasına.

Bir düzenleme uzantısı için PHContentEditingInput hayati öneme sahiptir — okuma ve işleme için kullanılabilir tam görüntü (veya video) dosyasını içeren bir nesne. Uzantı, etkinleştirme sırasında bu nesneyi alır ve kaynak malzeme olarak kullanır.

PHImageManager ve Önbellekleme

PHImageManager, görüntü yükleme ve önbellekleme işlemlerini yönetir. Bir düzenleme uzantısı için doğrudan kullanılmaz — uzantı tam dosyayı PHContentEditingInput aracılığıyla alır. Bununla birlikte, PHImageRequestOptions, istek parametrelerini (boyut, teslimat türü (senkron veya asenkron) ve sonuç formatı) yapılandırmanıza olanak tanır.

Apple'a göre PHImageManager, görüntü küçük resimlerini RAM'de otomatik olarak önbelleğe alır ve bu da tekrarlanan önizleme görüntülemesini hızlandırır. Düzenleme uzantıları için en iyi görüntü kalitesini elde etmek amacıyla PHImageRequestOptionsDeliveryModeHighQualityFormat kullanılması önerilir.

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
    // use image for display
}

Uzantı Oluşturma: PHContentEditingController

Her Photo Editing Extension, PHContentEditingController protokolünü uygular — uzantının merkezi kontrol öğesi. Protokol, arayüzü görüntülemek, giriş verilerini almak ve sonucu kaydetmek için yöntemler tanımlar.

Protokolün Temel Yöntemleri

beginContentEditing(with:) düzenleme oturumu başladığında çağrılır. Uzantı PHContentEditingInput alır ve orijinal görselle birlikte arayüzü görüntülemelidir. finishContentEditing(completionHandler:) düzenlemeyi tamamlar — uzantı, değiştirilen dosya ve AdjustmentData ile birlikte PHContentEditingOutput döndürür. cancelContentEditing() değişiklikleri kaydetmeden iptal eder.

Önemli bir nüans: beginContentEditing çağrısı anında uzantı, fotoğrafın yalnızca bir sürümüne — kullanıcının talep ettiği sürüme — erişim sağlar. Başka bir fotoğrafa veya albüme erişemez. Bu, Apple tarafından güvenlik amacıyla getirilmiş bir sanal alan kısıtlamasıdır.

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

Ayrıştırma Mimarisi

PHContentEditingController, düzenleme arayüzünü kaydetme mantığından ayırır. Ana iOS süreci beginContentEditing'i çağırır, uzantı kullanıcı arayüzünü gösterir, kullanıcı değişiklikleri yapar, ardından finishContentEditing yeni bir dosya oluşturur. Apple, arayüzü bloke etmemek için tüm kaynak yoğun işlemlerin (CIFilter filtreleri, Core Image manipülasyonları) ana iş parçacığı yerine arka plan iş parçacığında gerçekleştirilmesini önerir.

AdjustmentData ile Tahribatsız Düzenleme

PHAdjustmentData, Photo Editing Extension'da tahribatsız düzenlemeyi sağlayan temel mekanizmadır. Keyfi bir formatta uygulanan değişiklikler hakkında bilgi içeren bir nesnedir. Uzantı, filtre parametrelerini, maskeleri ve ayarları AdjustmentData'ya seri hale getirir ve değiştirilen görselle birlikte kaydeder.

Fotoğraf yeniden açıldığında, uzantı AdjustmentData'yı okur, önceki arayüz durumunu geri yükler ve kullanıcının aynı noktadan düzenlemeye devam etmesine olanak tanır. Uzantı yüklü değilse, fotoğraf son kaydedilen sürümde görüntülenir ve orijinal ayrı olarak saklanır.

Apple Dokümantasyonuna göre, PHAdjustmentData formatIdentifier ve formatVersion'ı (veri formatını tanımlamak için dizeler) saklar. Uzantı güncellenirken sürümü kontrol etmeli ve eski formatları doğru şekilde işlemelisiniz.

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

finishContentEditing anında uzantı, değiştirilen görsel dosyasıyla birlikte PHContentEditingOutput nesnesine AdjustmentData yazar. Sistem daha sonra her iki bileşeni de kaydeder: görüntüleme için sürüm ve düzenleme oturumunu geri yüklemek için meta veriler.

Fotoğraflar Uygulamasıyla Entegrasyon

Photo Editing Extension, onu içeren uygulama yüklendikten sonra Fotoğraflar uygulaması menüsünde otomatik olarak görünür. Kullanıcı bir fotoğraf açar, Düzenle'yi seçer ve araçların alt satırında yüklü tüm düzenleme uzantıları — hem sistem hem de üçüncü taraf — görüntülenir.

Uzantı Kaydı

Uzantı, ana uygulamanın Info.plist dosyası aracılığıyla, hangi içerik türlerinin uzantıyı etkinleştireceğini belirten NSExtensionActivationRule anahtarıyla kaydedilir. Bir fotoğraf düzenleyicisi için ActivationRule genellikle image gerektirir — uzantı videolar veya Canlı Fotoğraflar için görünmez.

Apple, düzenleme menüsünü aşırı yüklememek için belirli etkinleştirme türleri belirtilmesini önerir. Uzantı yalnızca JPEG ve HEIC destekliyorsa, etkinleştirmeyi bu formatlarla sınırlamakta fayda vardır.

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>

Kullanıcı Etkileşimi

Bir uzantı seçildikten sonra iOS, Fotoğraflar arayüzünün üzerinde görüntülenen özel bir UIViewController ile ayrı bir süreç oluşturur. Kullanıcı fotoğrafını, uzantı araçlarını ve İptal/Bitti düğmelerini görür. Uzantı, kendi denetleyicisi dışındaki gezinmeyi değiştiremez veya sistemin diğer bölümlerine erişemez.

Apple'ın İnsan Arayüzü Kılavuzlarına göre, uzantı arayüzü minimal ve işlevsel olmalıdır — reklamlar, ilgisiz bağlantılar veya gereksiz gezinme öğeleri olmamalıdır. Ekranı karmaşıklaştırmamak için araç paletini görüntülemek üzere UIScrollView kullanılması önerilir.

Sıkça Sorulan Sorular

Photo Editing Extension fotoğrafa nasıl erişir?

Uzantı, beginContentEditing(with:) yöntemi aracılığıyla tam görüntü dosyasının URL'si ile birlikte PHContentEditingInput alır. Erişim yalnızca seçilen bir fotoğrafa verilir — kitaplıktaki diğer kaynaklar üzerinde hakları yoktur.

Uzantı orijinal fotoğrafı değiştirebilir mi?

Hayır, orijinal asla değiştirilmez. Uzantı, PHContentEditingOutput aracılığıyla yeni bir sürüm oluşturur ve AdjustmentData, orijinal duruma dönme olanağı için değişiklik parametrelerini saklar.

Photo Editing Extension hangi dosya türlerini destekler?

Uzantı, PhotoKit'in desteklediği tüm formatlarla çalışır: JPEG, HEIC, RAW, PNG, TIFF ve Canlı Fotoğraflar. Sınırlamalar, uzantının Info.plist dosyasındaki NSExtensionActivationRule aracılığıyla belirlenir.

Düzenleme için ne kadar süre verilir?

iOS, finishContentEditing işlemi için 30 saniyeye kadar süre ayırır. Sınır aşılırsa uzantı zorla sonlandırılır ve değişiklikler kaydedilmez. CIFilter ile arka plan işleme bu süreyi uzatmaz.

Uzantıda Core Image ve Metal kullanılabilir mi?

Evet, Core Image (CIFilter) ve Metal (özel gölgelendiriciler için) tamamen desteklenir. Apple, ağır hesaplamaların Grand Central Dispatch aracılığıyla arka plan iş parçacıklarına aktarılmasını önerir.

Özet

  • Photo Editing Extension, uygulamalar arasında geçiş yapmadan Fotoğraflar uygulamasında çalışan gömülebilir bir düzenleme aracıdır
  • Mimari, düzenleme oturumunu yönetmek ve giriş verilerini almak için PHContentEditingController kullanır
  • PhotoKit, cihaz medya kaynaklarına erişmek için PHAsset, PHImageManager ve PHContentEditingInput sağlar
  • PHAdjustmentData, geri alma özelliğiyle değişiklik parametrelerinin serileştirilmesi yoluyla tahribatsız düzenleme sağlar
  • Uzantı, 30 saniye sınırı ve oturum başına yalnızca bir fotoğrafa erişim ile sanal alanda çalışır
  • Core Image, Metal ve tüm PhotoKit formatları desteklenir: JPEG, HEIC, RAW, PNG, TIFF ve Canlı Fotoğraflar

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun