Photo Editing Extension: bu nədir, iOS üçün genişlənmə imkanları

Müəllif: IT Sectr Dərc olunub: 2026-06-15 Oxuma vaxtı: 9 dəq

Photo Editing Extension — bu, üçüncü tərəf proqramlarına sistem Foto proqramında birbaşa redaktə alətləri əlavə etməyə imkan verən iOS mexanizmidir. Tam hüquqlu redaktorlardan fərqli olaraq, genişlənmə şəkli ayrı proqrama yükləmir — istifadəçi standart interfeysdən çıxmadan filtrlər tətbiq edir, rəngləri korrektə edir və ya effektlər əlavə edir. Apple Developer Documentation (2025) məlumatına görə, PhotoKit foto resursları ilə iş üçün 40-dan çox API təqdim edir, o cümlədən PHAdjustmentData və PHContentEditingController.

Əsas məqamlar

  • Photo Editing Extension proqramlar arasında keçid etmədən iOS-da standart Foto proqramına redaktə alətlərini inteqrasiya edir
  • Arxitektura interfeysin göstərilməsini və orijinal şəklin alınmasını idarə edən PHContentEditingController protokoluna əsaslanır
  • Genişlənmə qeyri-dağıdıcı redaktədən istifadə edir — bütün dəyişikliklər AdjustmentData kimi saxlanılır, orijinal isə toxunulmaz qalır
  • Şəkillə iş üçün genişlənmə tam şəkil faylı və metadata ilə PHContentEditingInput alır
  • PhotoKit PHAsset, PHAssetResource və PHImageManager vasitəsilə foto resurslarına giriş təmin edir

iOS-da Photo Editing Extension nədir

Photo Editing Extension — bu, iOS-da şəkil emalı alətlərini Foto proqramının standart interfeysinə daxil edən bir növ app extension-dır. İstifadəçi şəkli açır, «Redaktə et» düyməsini sıxır və quraşdırılmış genişlənmələr siyahısından istədiyini seçir. Redaktədən sonra nəticə kitabxanaya geri yazılır, orijinal fayl isə bərpa üçün əlçatan qalır.

Belə arxitektura istifadəçi təcrübəsinin əsas problemini həll edir: proqramlar arasında keçid etmək, şəkilləri ixrac və idxal etmək, versiyaları izləmək lazım deyil. WWDC 2025 məlumatına görə, bütün genişlənmələr təcrid olunmuş prosesdə öz sandbox-u və məhdud icra müddəti ilə işləyir — redaktə əməliyyatı üçün 30 saniyəyə qədər.

Genişlənmənin cihaz yaddaşında ixtiyari fayllara girişi yoxdur — yalnız istifadəçinin seçim interfeysi vasitəsilə açıq şəkildə ötürdüyü şəklə girişi var. Bu, üçüncü tərəf alətlərindən istifadə edərkən istifadəçi məlumatlarının təhlükəsizliyini təmin edir.

PhotoKit: arxitektura və əsas komponentlər

PhotoKit — bu, iOS 8-də ortaya çıxan Apple-ın cihaz media kitabxanası ilə iş üçün freymvorkudur. O, Foto resurslarına, o cümlədən şəkillərə, videolara, albomlara və metadataya proqram girişini təmin edir. Redaktə genişlənmələri üçün PhotoKit anbar və modifikasiya interfeysi arasında aralıq təbəqə rolunu oynayır.

PHAsset və PHAssetResource

PHAsset kitabxanada ayrıca media obyektini — şəkil və ya videonu təmsil edir. PHAsset vasitəsilə metadata əldə etmək olar: çəkiliş tarixi, fayl növü, xəritədə yer və kamera oriyentasiyası. PHAssetResource əsas resurslara — məsələn, RAW və ya HEIC formatında orijinal şəkil faylına giriş verir.

Redaktə genişlənməsi üçün PHContentEditingInput kritik əhəmiyyət daşıyır — bu, oxuma və emal üçün əlçatan tam şəkil (və ya video) faylını ehtiva edən obyektdir. Genişlənmə bu obyekti aktivləşdirmə anında alır və onu mənbə materialı kimi istifadə edir.

PHImageManager və keşləmə

PHImageManager şəkillərin yüklənməsini və keşlənməsini idarə edir. Redaktə genişlənməsi üçün birbaşa istifadə edilmir — genişlənmə tam faylı PHContentEditingInput vasitəsilə alır. Lakin PHImageRequestOptions sorğu parametrlərini konfiqurasiya etməyə imkan verir: ölçü, çatdırılma növü (sinxron və ya asinxron) və nəticə formatı.

Apple məlumatına görə, PHImageManager avtomatik olaraq şəkil miniatürlərini operativ yaddaşda keşləyir, bu da ön Baxışların təkrar göstərilməsini sürətləndirir. Redaktə genişlənməsi üçün ən yaxşı şəkil keyfiyyətini əldə etmək üçün PHImageRequestOptionsDeliveryModeHighQualityFormat istifadə etmək tövsiyə olunur.

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
    // şəkli göstərmək üçün istifadə edin
}

Genişlənmənin yaradılması: PHContentEditingController

Hər bir Photo Editing Extension PHContentEditingController protokolunu tətbiq edir — genişlənmənin mərkəzi idarəetmə elementi. Protokol interfeysin göstərilməsi, giriş məlumatlarının alınması və nəticənin saxlanması üçün metodları müəyyən edir.

Protokolun əsas metodları

beginContentEditing(with:) redaktə sessiyası başlayanda çağırılır. Genişlənmə PHContentEditingInput alır və orijinal şəkillə interfeysi göstərməlidir. finishContentEditing(completionHandler:) redaktəni bitirir — genişlənmə dəyişdirilmiş fayl və AdjustmentData ilə PHContentEditingOutput qaytarır. cancelContentEditing() dəyişiklikləri saxlamadan ləğv edir.

Vacib nüans: beginContentEditing çağırılan anda genişlənmə yalnız bir şəkil versiyasına — istifadəçinin tələb etdiyi versiyaya giriş əldə edir. Başqa şəklə və ya alboma müraciət etmək mümkün deyil. Bu, Apple-ın təhlükəsizlik üçün tətbiq etdiyi sandbox məhdudiyyətidir.

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ılma arxitekturası

PHContentEditingController redaktə interfeysini saxlama məntiqindən ayırır. Əsas iOS prosesi beginContentEditing-i çağırır, genişlənmə öz UI-ni göstərir, istifadəçi dəyişikliklər edir, sonra finishContentEditing yeni fayl yaradır. Apple bütün resurs tutumlu emalı — CIFilter filtrləri, Core Image manipulyasiyaları — interfeysi bloklamamaq üçün əsas thread-də deyil, fon thread-də yerinə yetirməyi tövsiyə edir.

AdjustmentData vasitəsilə qeyri-dağıdıcı redaktə

PHAdjustmentData — Photo Editing Extension-da qeyri-dağıdıcı redaktəni təmin edən əsas mexanizmdir. Bu, ixtiyari formatda tətbiq olunan dəyişikliklər haqqında məlumatı ehtiva edən obyektdir. Genişlənmə filtr parametrlərini, maskaları və parametrləri AdjustmentData-da serializasiya edir və dəyişdirilmiş şəkillə birlikdə saxlayır.

Şəklin təkrar açılmasında genişlənmə AdjustmentData-nı oxuyur, interfeysin əvvəlki vəziyyətini bərpa edir və istifadəçiyə eyni yerdən redaktəni davam etdirməyə imkan verir. Genişlənmə quraşdırılmayıbsa — şəkil son saxlanılmış versiyada göstərilir, orijinal isə ayrı saxlanılır.

Apple Documentation məlumatına görə, PHAdjustmentData formatIdentifier və formatVersion — məlumat formatını identifikasiya etmək üçün sətirləri saxlayır. Genişlənmə yenilənərkən versiyanı yoxlamaq və köhnə formatları düzgün emal etmək lazımdır.

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

finishContentEditing anında genişlənmə AdjustmentData-nı dəyişdirilmiş şəkil faylı ilə birlikdə PHContentEditingOutput obyektinə yazır. Sistem sonra hər iki komponenti saxlayır: göstərmək üçün versiyanı və redaktə sessiyasını bərpa etmək üçün metadatanı.

Foto proqramı ilə inteqrasiya

Photo Editing Extension onu ehtiva edən proqram quraşdırıldıqdan sonra avtomatik olaraq Foto proqramının menyusunda görünür. İstifadəçi şəkli açır, «Redaktə et» seçir və aşağı alətlər sırasında bütün quraşdırılmış redaktə genişlənmələri göstərilir — həm sistem, həm də üçüncü tərəf.

Genişlənmənin qeydiyyatı

Genişlənmə əsas proqramın Info.plist faylı vasitəsilə NSExtensionActivationRule açarı ilə qeydiyyatdan keçir, hansı ki, genişlənməni hansı məzmun növlərinin aktivləşdirdiyini göstərir. Foto redaktoru üçün ActivationRule adətən image tələb edir — genişlənmə video və ya canlı fotoşəkillər üçün göstərilməyəcək.

Apple redaktə menyusunu yükləməmək üçün konkret aktivləşdirmə növlərini göstərməyi tövsiyə edir. Genişlənmə yalnız JPEG və HEIC dəstəkləyirsə, aktivləşdirməni bu formatlarla məhdudlaşdırmaq məqsədəuyğundur.

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>

İstifadəçi ilə qarşılıqlı əlaqə

Genişlənmə seçildikdən sonra iOS Foto interfeysi üzərində göstərilən xüsusi UIViewController ilə ayrı proses yaradır. İstifadəçi öz şəklini, genişlənmə alətlərini və «Ləğv et» / «Hazır» düymələrini görür. Genişlənmə öz kontrollerindən kənarda naviqasiyanı dəyişə və ya sistemin digər hissələrinə giriş əldə edə bilməz.

Apple-ın Human Interface Guidelines məlumatına görə, genişlənmə interfeysi minimal və funksional olmalıdır — reklam, kənar linklər və artıq naviqasiya elementləri olmadan. Ekranı qarışdırmamaq üçün alət palitrasını göstərmək üçün UIScrollView istifadə etmək tövsiyə olunur.

Tez-tez verilən suallar

Photo Editing Extension şəklə necə giriş əldə edir?

Genişlənmə beginContentEditing(with:) metodu vasitəsilə tam şəkil faylının URL-i ilə PHContentEditingInput alır. Giriş yalnız bir seçilmiş şəklə verilir — kitabxananın digər resurslarına hüquq olmadan.

Genişlənmə şəklin orijinalını dəyişə bilərmi?

Xeyr, orijinal heç vaxt dəyişdirilmir. Genişlənmə PHContentEditingOutput vasitəsilə yeni versiya yaradır, AdjustmentData isə ilkin vəziyyətə qayıtmaq imkanı üçün dəyişiklik parametrlərini saxlayır.

Photo Editing Extension hansı fayl növlərini dəstəkləyir?

Genişlənmə PhotoKit-in dəstəklədiyi bütün formatlarla işləyir: JPEG, HEIC, RAW, PNG, TIFF və Live Photos. Məhdudiyyətlər genişlənmənin Info.plist faylında NSExtensionActivationRule vasitəsilə təyin edilir.

Redaktə üçün nə qədər vaxt verilir?

iOS finishContentEditing əməliyyatını yerinə yetirmək üçün 30 saniyəyə qədər vaxt ayırır. Limit aşıldıqda genişlənmə məcburi bağlanır və dəyişikliklər saxlanılmır. CIFilter ilə fon emalı bu müddəti uzatmır.

Genişlənmədə Core Image və Metal istifadə etmək olarmı?

Bəli, Core Image (CIFilter) və Metal (fərdi shaderlər üçün) tam dəstəklənir. Apple ağır hesablamaları Grand Central Dispatch vasitəsilə fon thread-lərinə çıxarmağı tövsiyə edir.

Nəticə

  • Photo Editing Extension — bu, proqramlar arasında keçid etmədən işləyən Foto proqramında quraşdırılmış redaktə alətidir
  • Arxitektura redaktə sessiyasını idarə etmək və giriş məlumatlarını almaq üçün PHContentEditingController-dən istifadə edir
  • PhotoKit cihazın media resurslarına giriş üçün PHAsset, PHImageManager və PHContentEditingInput təqdim edir
  • PHAdjustmentData qeyri-dağıdıcı redaktəni təmin edir — bərpa imkanı ilə dəyişiklik parametrlərinin serializasiyası
  • Genişlənmə 30 saniyə limiti və sessiya başına yalnız bir şəklə giriş ilə sandbox-da işləyir
  • Core Image, Metal və bütün PhotoKit formatları dəstəklənir: JPEG, HEIC, RAW, PNG, TIFF və Live Photos

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun