Photo Editing Extension: bu nima, iOS uchun kengaytma imkoniyatlari

Muallif: IT Sectr Nashr etilgan: 2026-06-15 O'qish vaqti: 9 daq

Photo Editing Extension — bu uchinchi tomon ilovalariga tizimning Foto ilovasiga to'g'ridan-to'g'ri tahrirlash vositalarini qo'shish imkonini beruvchi iOS mexanizmidir. To'liq muharrirlardan farqli o'laroq, kengaytma rasmni alohida ilovaga yuklamaydi — foydalanuvchi standart interfeysdan chiqmasdan filtrlarni qo'llaydi, ranglarni to'g'rilaydi yoki effektlarni qo'shadi. Apple Developer Documentation (2025) ma'lumotlariga ko'ra, PhotoKit foto resurslari bilan ishlash uchun 40 dan ortiq API ni taqdim etadi, jumladan PHAdjustmentData va PHContentEditingController.

Asosiy nuqtalar

  • Photo Editing Extension dasturlar o'rtasida almashmasdan iOS da standart Foto ilovasiga tahrirlash vositalarini o'rnatadi
  • Arxitektura interfeysni ko'rsatish va asl rasmni olishni boshqaradigan PHContentEditingController protokoliga asoslangan
  • Kengaytma buzilmaydigan tahrirlashdan foydalanadi — barcha o'zgarishlar AdjustmentData sifatida saqlanadi va asl nusxa o'zgarishsiz qoladi
  • Rasm bilan ishlash uchun kengaytma to'liq rasm fayli va metama'lumotlar bilan PHContentEditingInput oladi
  • PhotoKit PHAsset, PHAssetResource va PHImageManager orqali foto resurslariga kirishni ta'minlaydi

iOS da Photo Editing Extension nima

Photo Editing Extension — bu iOS da app extension turi bo'lib, u rasmni qayta ishlash vositalarini Foto ilovasining standart interfeysiga kiritadi. Foydalanuvchi rasmni ochadi, «Tahrirlash» tugmasini bosadi va o'rnatilgan kengaytmalar ro'yxatidan keraklisini tanlaydi. Tahrirlashdan so'ng natija kutubxonaga qaytariladi va asl fayl qayta tiklash uchun mavjud bo'lib qoladi.

Bunday arxitektura foydalanuvchi tajribasining asosiy muammosini hal qiladi: ilovalar o'rtasida almashish, rasmlarni eksport va import qilish, versiyalarni kuzatish shart emas. WWDC 2025 ma'lumotlariga ko'ra, barcha kengaytmalar izolyatsiya qilingan jarayonda o'z sandbox va cheklangan bajarish vaqti bilan ishlaydi — tahrirlash operatsiyasi uchun 30 soniyagacha.

Kengaytma qurilma xotirasidagi ixtiyoriy fayllarga kirish huquqiga ega emas — faqat foydalanuvchi tanlash interfeysi orqali aniq uzatgan rasmga. Bu uchinchi tomon vositalaridan foydalanishda foydalanuvchi ma'lumotlarining xavfsizligini ta'minlaydi.

PhotoKit: arxitektura va asosiy komponentlar

PhotoKit — bu iOS 8 da paydo bo'lgan qurilma media kutubxonasi bilan ishlash uchun Apple freymvorki. U Foto resurslariga, jumladan rasmlar, videolar, albomlar va metama'lumotlarga dasturiy kirishni ta'minlaydi. Tahrirlash kengaytmalari uchun PhotoKit saqlash va modifikatsiya interfeysi o'rtasida oraliq qatlam vazifasini bajaradi.

PHAsset va PHAssetResource

PHAsset kutubxonadagi alohida media ob'ektni — rasm yoki videoni ifodalaydi. PHAsset orqali metama'lumotlarni olish mumkin: suratga olish sanasi, fayl turi, xaritadagi joy va kamera yo'nalishi. PHAssetResource asosiy resurslarga — masalan, RAW yoki HEIC formatidagi asl rasm fayliga kirishni beradi.

Tahrirlash kengaytmasi uchun PHContentEditingInput muhim ahamiyatga ega — bu o'qish va qayta ishlash uchun mavjud bo'lgan to'liq rasm (yoki video) faylini o'z ichiga olgan ob'ekt. Kengaytma ushbu ob'ektni faollashtirish paytida oladi va uni manba materiali sifatida ishlatadi.

PHImageManager va keshlashtirish

PHImageManager rasmlarni yuklash va keshlashtirishni boshqaradi. Tahrirlash kengaytmasi uchun bevosita ishlatilmaydi — kengaytma to'liq faylni PHContentEditingInput orqali oladi. Biroq, PHImageRequestOptions so'rov parametrlarini sozlash imkonini beradi: o'lcham, yetkazib berish turi (sinxron yoki asinxron) va natija formati.

Apple ma'lumotlariga ko'ra, PHImageManager avtomatik ravishda rasm miniatyuralarini operativ xotirada keshlashtiradi, bu esa oldindan ko'rishni qayta ko'rsatishni tezlashtiradi. Tahrirlash kengaytmasi uchun eng yaxshi rasm sifatini olish uchun PHImageRequestOptionsDeliveryModeHighQualityFormat dan foydalanish tavsiya etiladi.

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
    // tasvirni ko'rsatish uchun foydalaning
}

Kengaytma yaratish: PHContentEditingController

Har bir Photo Editing Extension PHContentEditingController protokolini amalga oshiradi — kengaytmani boshqarishning markaziy elementi. Protokol interfeysni ko'rsatish, kirish ma'lumotlarini olish va natijani saqlash usullarini belgilaydi.

Protokolning asosiy usullari

beginContentEditing(with:) tahrirlash sessiyasi boshlanganda chaqiriladi. Kengaytma PHContentEditingInput oladi va asl rasm bilan interfeysni ko'rsatishi kerak. finishContentEditing(completionHandler:) tahrirlashni tugatadi — kengaytma o'zgartirilgan fayl va AdjustmentData bilan PHContentEditingOutput qaytaradi. cancelContentEditing() o'zgarishlarni saqlamasdan bekor qiladi.

Muhim nuans: beginContentEditing chaqirilgan paytda kengaytma faqat bitta rasm versiyasiga — foydalanuvchi so'ragan versiyaga kirish huquqiga ega. Boshqa rasmga yoki albomga murojaat qilish mumkin emas. Bu Apple tomonidan xavfsizlik uchun joriy qilingan sandbox cheklovidir.

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

Ajratish arxitekturasi

PHContentEditingController tahrirlash interfeysini saqlash mantig'idan ajratadi. Asosiy iOS jarayoni beginContentEditing ni chaqiradi, kengaytma o'z UI sini ko'rsatadi, foydalanuvchi o'zgarishlar kiritadi, so'ngra finishContentEditing yangi fayl yaratadi. Apple barcha resurs talab qiladigan ishlov berishni — CIFilter filtrlari, Core Image manipulyatsiyalari — interfeysni bloklamaslik uchun asosiy oqimda emas, balki fon oqimida bajarishni tavsiya qiladi.

AdjustmentData orqali buzilmaydigan tahrirlash

PHAdjustmentData — Photo Editing Extension da buzilmaydigan tahrirlashni ta'minlovchi asosiy mexanizm. Bu ixtiyoriy formatda qo'llanilgan o'zgarishlar haqida ma'lumotni o'z ichiga olgan ob'ekt. Kengaytma filtr parametrlarini, maskalarni va sozlamalarni AdjustmentData ga seriyalashtiradi va o'zgartirilgan rasm bilan birga saqlaydi.

Rasmni qayta ochganda, kengaytma AdjustmentData ni o'qiydi, interfeysning oldingi holatini tiklaydi va foydalanuvchiga tahrirlashni o'sha joydan davom ettirishga imkon beradi. Agar kengaytma o'rnatilmagan bo'lsa — rasm oxirgi saqlangan versiyada ko'rsatiladi va asl nusxa alohida saqlanadi.

Apple Documentation ma'lumotlariga ko'ra, PHAdjustmentData formatIdentifier va formatVersion ni saqlaydi — ma'lumot formatini identifikatsiya qilish uchun satrlar. Kengaytma yangilanayotganda versiyani tekshirish va eski formatlarni to'g'ri qayta ishlash kerak.

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

finishContentEditing paytida kengaytma AdjustmentData ni o'zgartirilgan rasm fayli bilan birga PHContentEditingOutput ob'ektiga yozadi. Tizim keyin ikkala komponentni saqlaydi: ko'rsatish uchun versiyani va tahrirlash sessiyasini tiklash uchun metama'lumotlarni.

Foto ilovasi bilan integratsiya

Photo Editing Extension uni o'z ichiga olgan ilova o'rnatilgandan so'ng avtomatik ravishda Foto ilovasi menyusida paydo bo'ladi. Foydalanuvchi rasmni ochadi, «Tahrirlash» ni tanlaydi va pastki vositalar qatorida barcha o'rnatilgan tahrirlash kengaytmalari ko'rsatiladi — ham tizim, ham uchinchi tomon.

Kengaytmani ro'yxatdan o'tkazish

Kengaytma asosiy ilovaning Info.plist fayli orqali NSExtensionActivationRule kaliti bilan ro'yxatdan o'tkaziladi, u kengaytmani qanday kontent turlari faollashtirishini belgilaydi. Foto muharriri uchun ActivationRule odatda image ni talab qiladi — kengaytma video yoki jonli fotosuratlar uchun ko'rsatilmaydi.

Apple tahrirlash menyusini ortiqcha yuklamaslik uchun aniq faollashtirish turlarini ko'rsatishni tavsiya qiladi. Agar kengaytma faqat JPEG va HEIC ni qo'llab-quvvatlasa, faollashtirishni ushbu formatlar bilan cheklash maqsadga muvofiqdir.

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>

Foydalanuvchi bilan o'zaro aloqa

Kengaytma tanlangandan so'ng iOS Foto interfeysi ustida ko'rsatiladigan maxsus UIViewController bilan alohida jarayon yaratadi. Foydalanuvchi o'z rasmini, kengaytma vositalarini va «Bekor qilish» / «Tayyor» tugmalarini ko'radi. Kengaytma o'z kontrolleridan tashqarida navigatsiyani o'zgartira olmaydi yoki tizimning boshqa qismlariga kira olmaydi.

Apple ning Human Interface Guidelines ma'lumotlariga ko'ra, kengaytma interfeysi minimal va funksional bo'lishi kerak — reklama, tashqi havolalar va ortiqcha navigatsiya elementlarisiz. Ekranni bezovta qilmaslik uchun asboblar palitrasini ko'rsatishda UIScrollView dan foydalanish tavsiya etiladi.

Tez-tez so'raladigan savollar

Photo Editing Extension rasmga qanday kirish huquqiga ega bo'ladi?

Kengaytma beginContentEditing(with:) metodi orqali to'liq rasm faylining URL i bilan PHContentEditingInput oladi. Kirish faqat bitta tanlangan rasmga beriladi — kutubxonaning boshqa resurslariga huquqsiz.

Kengaytma rasmning asl nusxasini o'zgartira oladimi?

Yo'q, asl nusxa hech qachon o'zgartirilmaydi. Kengaytma PHContentEditingOutput orqali yangi versiya yaratadi, AdjustmentData esa dastlabki holatga qaytish imkoniyati uchun o'zgarish parametrlarini saqlaydi.

Photo Editing Extension qanday fayl turlarini qo'llab-quvvatlaydi?

Kengaytma PhotoKit qo'llab-quvvatlaydigan barcha formatlar bilan ishlaydi: JPEG, HEIC, RAW, PNG, TIFF va Live Photos. Cheklovlar kengaytmaning Info.plist faylida NSExtensionActivationRule orqali o'rnatiladi.

Tahrirlash uchun qancha vaqt beriladi?

iOS finishContentEditing operatsiyasini bajarish uchun 30 soniyagacha vaqt ajratadi. Limit oshib ketganda kengaytma majburiy tugatiladi va o'zgarishlar saqlanmaydi. CIFilter bilan fon ishlov berish bu vaqtni uzaytirmaydi.

Kengaytmada Core Image va Metal dan foydalanish mumkinmi?

Ha, Core Image (CIFilter) va Metal (shaxsiy shaderlar uchun) to'liq qo'llab-quvvatlanadi. Apple og'ir hisob-kitoblarni Grand Central Dispatch orqali fon oqimlariga o'tkazishni tavsiya qiladi.

Xulosa

  • Photo Editing Extension — bu ilovalar o'rtasida almashmasdan ishlaydigan Foto ilovasiga o'rnatilgan tahrirlash vositasi
  • Arxitektura tahrirlash sessiyasini boshqarish va kirish ma'lumotlarini olish uchun PHContentEditingController dan foydalanadi
  • PhotoKit qurilmaning media resurslariga kirish uchun PHAsset, PHImageManager va PHContentEditingInput ni taqdim etadi
  • PHAdjustmentData buzilmaydigan tahrirlashni ta'minlaydi — qayta tiklash imkoniyati bilan o'zgarish parametrlarini seriyalashtirish
  • Kengaytma 30 soniya limiti va sessiyada faqat bitta rasmga kirish bilan sandbox da ishlaydi
  • Core Image, Metal va barcha PhotoKit formatlari qo'llab-quvvatlanadi: JPEG, HEIC, RAW, PNG, TIFF va Live Photos

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing