Photo Editing Extension: یہ کیا ہے اور iOS کے لیے ایکسٹینشن کی صلاحیتیں

مصنف: IT Sectr اشاعت: 2026-06-15 مطالعے کا وقت: 9 منٹ

Photo Editing Extension ایک iOS میکانزم ہے جو تیسرے فریق کی ایپس کو سسٹم فوٹو ایپ میں براہ راست ترمیمی ٹولز شامل کرنے کی اجازت دیتا ہے۔ مکمل خصوصیات والے ایڈیٹرز کے برعکس، ایکسٹینشن فوٹو کو علیحدہ ایپ میں لوڈ نہیں کرتی — صارف معیاری انٹرفیس سے باہر نکلے بغیر فلٹرز لگاتا ہے، رنگوں کو ایڈجسٹ کرتا ہے یا اثرات شامل کرتا ہے۔ Apple Developer Documentation (2025) کے مطابق، PhotoKit فوٹو وسائل کے ساتھ کام کرنے کے لیے 40 سے زیادہ APIs فراہم کرتا ہے، بشمول PHAdjustmentData اور PHContentEditingController۔

اہم نکات

  • Photo Editing Extension پروگراموں کے درمیان سوئچ کیے بغیر معیاری iOS فوٹو ایپ میں ترمیمی ٹولز ایمبیڈ کرتی ہے
  • آرکیٹیکچر PHContentEditingController پروٹوکول پر بنایا گیا ہے، جو انٹرفیس ڈسپلے اور اصل تصویر حاصل کرنے کا انتظام کرتا ہے
  • ایکسٹینشن غیر تباہ کن ترمیم استعمال کرتی ہے — تمام تبدیلیاں AdjustmentData کے طور پر محفوظ ہوتی ہیں، جبکہ اصل محفوظ رہتا ہے
  • تصویر کے ساتھ کام کرنے کے لیے، ایکسٹینشن مکمل فوٹو فائل اور میٹا ڈیٹا کے ساتھ PHContentEditingInput وصول کرتی ہے
  • PhotoKit PHAsset، PHAssetResource اور PHImageManager کے ذریعے فوٹو وسائل تک رسائی فراہم کرتا ہے

iOS میں Photo Editing Extension کیا ہے

Photo Editing Extension iOS میں ایک قسم کی ایپ ایکسٹینشن ہے جو فوٹو ایپ کے معیاری انٹرفیس میں تصویری پروسیسنگ ٹولز ایمبیڈ کرتی ہے۔ صارف ایک فوٹو کھولتا ہے، ترمیم کے بٹن کو دباتا ہے اور انسٹال شدہ ایکسٹینشنز کی فہرست سے مطلوبہ ایکسٹینشن منتخب کرتا ہے۔ ترمیم کے بعد، نتیجہ لائبریری میں واپس محفوظ ہو جاتا ہے اور اصل فائل واپس لانے کے لیے دستیاب رہتی ہے۔

یہ آرکیٹیکچر صارف کے تجربے کے ایک اہم مسئلے کو حل کرتا ہے: ایپس کے درمیان سوئچ کرنے، تصاویر کو ایکسپورٹ اور امپورٹ کرنے، یا ورژنز کو ٹریک کرنے کی ضرورت نہیں ہے۔ WWDC 2025 کے مطابق، تمام ایکسٹینشنز اپنے سینڈ باکس اور محدود عملدرآمد وقت — فی ترمیمی آپریشن 30 سیکنڈ تک — کے ساتھ ایک الگ تھلگ عمل میں چلتی ہیں۔

ایکسٹینشن کی ڈیوائس میموری میں صوابدیدی فائلوں تک رسائی نہیں ہے — صرف اس فوٹو تک جسے صارف نے انتخاب کے انٹرفیس کے ذریعے واضح طور پر منتقل کیا ہے۔ یہ تیسرے فریق کے ٹولز استعمال کرتے وقت صارف کے ڈیٹا کی حفاظت کو یقینی بناتا ہے۔

PhotoKit: آرکیٹیکچر اور اہم اجزاء

PhotoKit ڈیوائس میڈیا لائبریری کے ساتھ کام کرنے کے لیے Apple کا فریم ورک ہے، جو iOS 8 میں متعارف کرایا گیا تھا۔ یہ تصاویر، ویڈیوز، البمز اور میٹا ڈیٹا سمیت فوٹو وسائل تک پروگرامی رسائی فراہم کرتا ہے۔ ترمیمی ایکسٹینشنز کے لیے، PhotoKit اسٹوریج اور ترمیم کے انٹرفیس کے درمیان ایک درمیانی پرت کے طور پر کام کرتا ہے۔

PHAsset اور PHAssetResource

PHAsset لائبریری میں ایک انفرادی میڈیا آبجیکٹ کی نمائندگی کرتا ہے — ایک فوٹو یا ویڈیو۔ PHAsset کے ذریعے، آپ میٹا ڈیٹا حاصل کر سکتے ہیں: کیپچر کی تاریخ، فائل کی قسم، نقشے پر مقام اور کیمرے کی سمت۔ PHAssetResource بنیادی وسائل تک رسائی فراہم کرتا ہے — مثال کے طور پر، RAW یا HEIC فارمیٹ میں اصل فوٹو فائل۔

ترمیمی ایکسٹینشن کے لیے، PHContentEditingInput انتہائی اہم ہے — ایک آبجیکٹ جو پڑھنے اور پروسیسنگ کے لیے دستیاب مکمل تصویر (یا ویڈیو) فائل پر مشتمل ہوتا ہے۔ ایکسٹینشن ایکٹیویشن کے وقت اس آبجیکٹ کو وصول کرتی ہے اور اسے ماخذ مواد کے طور پر استعمال کرتی ہے۔

PHImageManager اور کیشنگ

PHImageManager تصویر لوڈنگ اور کیشنگ کا انتظام کرتا ہے۔ ترمیمی ایکسٹینشن کے لیے، یہ براہ راست استعمال نہیں ہوتا — ایکسٹینشن PHContentEditingInput کے ذریعے مکمل فائل وصول کرتی ہے۔ تاہم، PHImageRequestOptions آپ کو درخواست کے پیرامیٹرز (سائز، ڈیلیوری کی قسم (ہم وقت یا غیر ہم وقت) اور نتیجے کی شکل) ترتیب دینے کی اجازت دیتا ہے۔

Apple کے مطابق، PHImageManager خود بخود تصویروں کے تھمب نیلز کو RAM میں کیش کرتا ہے، جس سے بار بار پیش نظارہ ڈسپلے تیز ہوتا ہے۔ ترمیمی ایکسٹینشنز کے لیے، بہترین تصویر کے معیار کے لیے PHImageRequestOptionsDeliveryModeHighQualityFormat استعمال کرنے کی سفارش کی جاتی ہے۔

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
}

ایکسٹینشن بنانا: PHContentEditingController

ہر Photo Editing Extension PHContentEditingController پروٹوکول کو لاگو کرتی ہے — ایکسٹینشن کا مرکزی کنٹرول عنصر۔ پروٹوکول انٹرفیس ڈسپلے کرنے، ان پٹ ڈیٹا حاصل کرنے اور نتیجہ محفوظ کرنے کے لیے طریقوں کی وضاحت کرتا ہے۔

پروٹوکول کے اہم طریقے

beginContentEditing(with:) ترمیمی سیشن شروع ہونے پر کال کیا جاتا ہے۔ ایکسٹینشن PHContentEditingInput وصول کرتی ہے اور اصل تصویر کے ساتھ انٹرفیس ڈسپلے کرنا چاہیے۔ finishContentEditing(completionHandler:) ترمیم مکمل کرتا ہے — ایکسٹینشن تبدیل شدہ فائل اور AdjustmentData کے ساتھ PHContentEditingOutput واپس کرتی ہے۔ cancelContentEditing() تبدیلیوں کو محفوظ کیے بغیر منسوخ کرتا ہے۔

ایک اہم نکتہ: beginContentEditing کال کے وقت، ایکسٹینشن کو فوٹو کے صرف ایک ورژن تک رسائی ملتی ہے — وہ جو صارف نے درخواست کی تھی۔ یہ کسی دوسری فوٹو یا البم تک رسائی حاصل نہیں کر سکتی۔ یہ Apple کی جانب سے سیکیورٹی کے لیے متعارف کردہ سینڈ باکس کی پابندی ہے۔

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

علیحدگی کا آرکیٹیکچر

PHContentEditingController ترمیمی انٹرفیس کو محفوظ کرنے کی منطق سے الگ کرتا ہے۔ مرکزی iOS عمل beginContentEditing کو کال کرتا ہے، ایکسٹینشن اپنا UI دکھاتی ہے، صارف تبدیلیاں کرتا ہے، پھر finishContentEditing ایک نئی فائل بناتا ہے۔ Apple انٹرفیس کو مسدود ہونے سے بچانے کے لیے تمام وسائل پر مبنی پروسیسنگ — CIFilter فلٹرز، Core Image ہیرا پھیری — کو مرکزی تھریڈ کی بجائے بیک گراؤنڈ تھریڈ میں کرنے کی سفارش کرتا ہے۔

AdjustmentData کے ذریعے غیر تباہ کن ترمیم

PHAdjustmentData کلیدی میکانزم ہے جو Photo Editing Extension میں غیر تباہ کن ترمیم کو قابل بناتا ہے۔ یہ ایک آبجیکٹ ہے جس میں صوابدیدی فارمیٹ میں لاگو تبدیلیوں کے بارے میں معلومات ہوتی ہیں۔ ایکسٹینشن فلٹر کے پیرامیٹرز، ماسک اور ترتیبات کو AdjustmentData میں سیریلائز کرتی ہے اور تبدیل شدہ تصویر کے ساتھ محفوظ کرتی ہے۔

فوٹو دوبارہ کھولنے پر، ایکسٹینشن AdjustmentData پڑھتی ہے، پچھلی انٹرفیس حالت بحال کرتی ہے اور صارف کو اسی نقطہ سے ترمیم جاری رکھنے کی اجازت دیتی ہے۔ اگر ایکسٹینشن انسٹال نہیں ہے تو، فوٹو آخری محفوظ شدہ ورژن میں ڈسپلے ہوتی ہے، جبکہ اصل علیحدہ طور پر محفوظ کیا جاتا ہے۔

Apple دستاویزات کے مطابق، PHAdjustmentData formatIdentifier اور formatVersion — ڈیٹا فارمیٹ کی شناخت کے لیے سٹرنگز — محفوظ کرتا ہے۔ ایکسٹینشن کو اپ ڈیٹ کرتے وقت، آپ کو ورژن چیک کرنا چاہیے اور پرانے فارمیٹس کو درست طریقے سے ہینڈل کرنا چاہیے۔

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

finishContentEditing کے وقت، ایکسٹینشن تبدیل شدہ تصویر فائل کے ساتھ PHContentEditingOutput آبجیکٹ میں AdjustmentData لکھتی ہے۔ اس کے بعد نظام دونوں اجزاء کو محفوظ کرتا ہے: ڈسپلے کے لیے ورژن اور ترمیمی سیشن بحال کرنے کے لیے میٹا ڈیٹا۔

فوٹو ایپ کے ساتھ انضمام

Photo Editing Extension خود بخود فوٹو ایپ مینو میں ظاہر ہوتی ہے اس ایپ کو انسٹال کرنے کے بعد جس میں یہ موجود ہوتی ہے۔ صارف ایک فوٹو کھولتا ہے، ترمیم منتخب کرتا ہے، اور ٹولز کی نچلی قطار میں تمام انسٹال شدہ ترمیمی ایکسٹینشنز — سسٹم اور تیسرے فریق دونوں — ڈسپلے ہوتی ہیں۔

ایکسٹینشن کی رجسٹریشن

ایکسٹینشن مرکزی ایپ کے Info.plist کے ذریعے NSExtensionActivationRule کلید کے ساتھ رجسٹر ہوتی ہے، جو بتاتی ہے کہ کس قسم کا مواد ایکسٹینشن کو متحرک کرتا ہے۔ فوٹو ایڈیٹر کے لیے، ActivationRule عام طور پر image کی ضرورت ہوتی ہے — ایکسٹینشن ویڈیوز یا لائیو فوٹوز کے لیے ظاہر نہیں ہوگی۔

Apple ترمیم مینو کو اوورلوڈ کرنے سے بچنے کے لیے مخصوص ایکٹیویشن کی اقسام بتانے کی سفارش کرتا ہے۔ اگر ایکسٹینشن صرف JPEG اور HEIC کو سپورٹ کرتی ہے، تو ایکٹیویشن کو ان فارمیٹس تک محدود کرنا مناسب ہے۔

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>

صارف کے ساتھ تعامل

ایکسٹینشن منتخب کرنے کے بعد، iOS ایک کسٹم UIViewController کے ساتھ ایک علیحدہ عمل بناتا ہے جو فوٹو انٹرفیس کے اوپر ڈسپلے ہوتا ہے۔ صارف اپنی فوٹو، ایکسٹینشن کے ٹولز اور منسوخ/مکمل بٹن دیکھتا ہے۔ ایکسٹینشن اپنے کنٹرولر کے باہر نیویگیشن تبدیل نہیں کر سکتی یا سسٹم کے دوسرے حصوں تک رسائی حاصل نہیں کر سکتی۔

Apple کے ہیومن انٹرفیس گائیڈلائنز کے مطابق، ایکسٹینشن کا انٹرفیس کم سے کم اور فعال ہونا چاہیے — اشتہارات، غیر متعلقہ لنکس یا غیر ضروری نیویگیشن عناصر کے بغیر۔ اسکرین کو بے ترتیب ہونے سے بچانے کے لیے ٹول پیلیٹ ڈسپلے کرنے کے لیے UIScrollView استعمال کرنے کی سفارش کی جاتی ہے۔

اکثر پوچھے گئے سوالات

Photo Editing Extension فوٹو تک کیسے رسائی حاصل کرتی ہے؟

ایکسٹینشن beginContentEditing(with:) طریقہ کے ذریعے مکمل تصویر فائل کے URL کے ساتھ PHContentEditingInput وصول کرتی ہے۔ رسائی صرف ایک منتخب فوٹو تک دی جاتی ہے — لائبریری کے دوسرے وسائل پر حقوق کے بغیر۔

کیا ایکسٹینشن اصل فوٹو کو تبدیل کر سکتی ہے؟

نہیں، اصل کبھی تبدیل نہیں ہوتی۔ ایکسٹینشن PHContentEditingOutput کے ذریعے ایک نیا ورژن بناتی ہے، اور AdjustmentData اصل حالت میں واپس جانے کی صلاحیت کے لیے تبدیلی کے پیرامیٹرز محفوظ کرتا ہے۔

Photo Editing Extension کن فائل کی اقسام کو سپورٹ کرتی ہے؟

ایکسٹینشن ان تمام فارمیٹس کے ساتھ کام کرتی ہے جنہیں PhotoKit سپورٹ کرتا ہے: JPEG، HEIC، RAW، PNG، TIFF اور لائیو فوٹوز۔ پابندیاں ایکسٹینشن کے Info.plist میں NSExtensionActivationRule کے ذریعے مقرر کی جاتی ہیں۔

ترمیم کے لیے کتنا وقت دیا جاتا ہے؟

iOS finishContentEditing آپریشن کے لیے 30 سیکنڈ تک مختص کرتا ہے۔ حد سے تجاوز کرنے پر، ایکسٹینشن زبردستی ختم ہو جاتی ہے اور تبدیلیاں محفوظ نہیں ہوتیں۔ CIFilter کے ساتھ بیک گراؤنڈ پروسیسنگ اس وقت کو بڑھا نہیں دیتی۔

کیا ایکسٹینشن میں Core Image اور Metal استعمال کیا جا سکتا ہے؟

ہاں، Core Image (CIFilter) اور Metal (کسٹم شیڈرز کے لیے) مکمل طور پر سپورٹ ہیں۔ Apple Grand Central Dispatch کے ذریعے بھاری حسابات کو بیک گراؤنڈ تھریڈز پر منتقل کرنے کی سفارش کرتا ہے۔

خلاصہ

  • Photo Editing Extension فوٹو ایپ میں ایک ایمبیڈ ایبل ترمیمی ٹول ہے جو ایپس کے درمیان سوئچ کیے بغیر کام کرتا ہے
  • آرکیٹیکچر ترمیمی سیشن کے انتظام اور ان پٹ ڈیٹا حاصل کرنے کے لیے PHContentEditingController استعمال کرتا ہے
  • PhotoKit ڈیوائس میڈیا وسائل تک رسائی کے لیے PHAsset، PHImageManager اور PHContentEditingInput فراہم کرتا ہے
  • PHAdjustmentData واپس لوٹنے کی صلاحیت کے ساتھ تبدیلی کے پیرامیٹرز کی سیریلائزیشن کے ذریعے غیر تباہ کن ترمیم کو قابل بناتا ہے
  • ایکسٹینشن 30 سیکنڈ کی حد اور فی سیشن صرف ایک فوٹو تک رسائی کے ساتھ سینڈ باکس میں چلتی ہے
  • Core Image، Metal اور تمام PhotoKit فارمیٹس سپورٹ ہیں: JPEG، HEIC، RAW، PNG، TIFF اور لائیو فوٹوز

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں