फ़ोटो में बदलाव करने वाला ऐप्लिकेशन Photopea, फ़ाइल हैंडलिंग एपीआई का इस्तेमाल किस तरह करता है, ताकि उपयोगकर्ता अपने फ़ाइल एक्सप्लोरर से फ़ाइलें खोल सकें

फ़ाइल मैनेज करने वाले एपीआई की मदद से, वेब ऐप्लिकेशन अपने-आप फ़ाइल हैंडलर के तौर पर रजिस्टर हो जाते हैं. ऐसा उन फ़ाइल फ़ॉर्मैट के लिए किया जाता है जिनमें वे काम कर सकते हैं. जानें कि इमेज एडिटिंग ऐप्लिकेशन Photopea, इस एपीआई का इस्तेमाल कैसे करता है.

परिचय

(यह लेख वीडियो के तौर पर भी उपलब्ध है.)

Photopea एक मुफ़्त ऑनलाइन इमेज एडिटर है. इसे इवान कुत्स्किर ने डेवलप किया है. इवान ने साल 2012 में इस ऐप्लिकेशन पर काम करना शुरू किया था. साथ ही, वे Photopea में जोड़ी गई मुख्य सुविधाओं के बारे में बताने के लिए एक ब्लॉग भी चलाते हैं. Photopea, PSD (Adobe Photoshop), XCF (GIMP), Sketch (Sketch ऐप्लिकेशन), XD (Adobe XD), और CDR (CorelDRAW) फ़ॉर्मैट के साथ काम कर सकता है.

Photopea ऐप्लिकेशन.

Photopea में फ़ाइल मैनेज करना

इंस्टॉल किए जा सकने वाले PWA के तौर पर, Photopea को स्टैंडअलोन विंडो में चलाया जा सकता है. ऐसा करने पर, PWA की एक खास सुविधा चालू हो जाती है. Photopea इस सुविधा का ज़्यादा से ज़्यादा इस्तेमाल करता है: फ़ाइल मैनेज करने की सुविधा.

फ़ाइल मैनेज करने वाले एपीआई का एलान करने वाला हिस्सा

इंस्टॉल होने के बाद, Photopea अपने-आप ऑपरेटिंग सिस्टम में फ़ाइल हैंडलर के तौर पर रजिस्टर हो जाता है. ऐसा, उन अलग-अलग फ़ाइल फ़ॉर्मैट के लिए किया जाता है जिनमें यह काम करता है. ऐसा करने के लिए, वेब ऐप्लिकेशन मेनिफ़ेस्ट में file_handlers फ़ील्ड जोड़ें. इस्तेमाल किए जा सकने वाले हर फ़ाइल टाइप को ऑब्जेक्ट माना जाता है. action की वैल्यू के तौर पर रिलेटिव यूआरएल होता है. accept ऑब्जेक्ट, एमआईएम टाइप और उनसे जुड़े फ़ाइल एक्सटेंशन का एक मैप होता है. उदाहरण के लिए, {"image/jpeg": [".jpeg", ".jpg"]}. यहां दिया गया कोड, Photopea के वेब ऐप्लिकेशन का प्रोडक्शन मेनिफ़ेस्ट है. इसमें काम के हिस्सों को हाइलाइट किया गया है.

{
    "name": "Photopea",
    "short_name": "Photopea",
    "display": "standalone",
    "icons": [
        {  "src": "promo/icon512.png",     "type": "image/png", "sizes": "512x512"  },
        {  "src": "promo/maskable512.png", "type": "image/png", "sizes": "512x512", "purpose":"maskable"  }
    ],
    "start_url": "/?utm_source=homescreen",
    "background_color":"#0f171d",
    "theme_color": "#474747",
    "file_handlers": [
        { "action": "/", "accept": {  "image/psd" : [ ".psd" ]  } },
        { "action": "/", "accept": {  "image/jpeg": [ ".jpeg", ".jpg" ]  } },
        { "action": "/", "accept": {  "image/png" : [ ".png" ]  } },
        { "action": "/", "accept": {  "image/webp": [ ".webp" ]  } },
        { "action": "/", "accept": {  "image/bmp" : [ ".bmp" ]  } },
        { "action": "/", "accept": {  "image/gif" : [ ".gif" ]  } },
        { "action": "/", "accept": {  "image/svg+xml": [ ".svg" ]  } },
        { "action": "/", "accept": {  "image/pdf" : [ ".pdf" ]  } },
        { "action": "/", "accept": {  "image/tiff": [ ".tif", ".tiff" ]  } },
        { "action": "/", "accept": {  "image/ai"  : [ ".ai"  ]  } },
        { "action": "/", "accept": {  "image/psb": [ ".psb" ]  } },
        { "action": "/", "accept": {  "image/xcf": [ ".xcf" ]  } },
        { "action": "/", "accept": {  "image/sketch": [ ".sketch" ]  } },
        { "action": "/", "accept": {  "image/xd" : [ ".xd"  ]  } },
        { "action": "/", "accept": {  "image/pxd": [ ".pxd" ]  } },
        { "action": "/", "accept": {  "image/cdr": [ ".cdr" ]  } },
        { "action": "/", "accept": {  "image/eps": [ ".eps", ".ps" ]  } },
        { "action": "/", "accept": {  "image/x-icon": [ ".ico" ]  } },
        { "action": "/", "accept": {  "image/jpx": [ ".jpx" ]  } },
        { "action": "/", "accept": {  "image/jp2": [ ".jp2" ]  } },
        { "action": "/", "accept": {  "image/x-tga": [ ".tga" ]  } },
        { "action": "/", "accept": {  "image/vnd-ms.dds": [ ".dds" ]  } }
    ],
    "share_target": {
        "action": "/",
        "method": "POST",
        "enctype": "multipart/form-data",
        "params": {
            "files": [
            {
                "name": "image",
                "accept": ["image/jpeg", "image/png", "image/webp", "image/gif"]
            }
          ]
        }
    }
}

macOS Finder में, उपयोगकर्ता ने किसी फ़ाइल पर दायां क्लिक किया है और फिर Photopea को 'इसमें खोलें' के तौर पर चुना है.

फ़ाइल मैनेज करने वाले एपीआई का ज़रूरी हिस्सा

इसके बाद, एपीआई का ज़रूरी हिस्सा उन फ़ाइलों को मैनेज करता है जिन्हें ऑपरेटिंग सिस्टम, PWA को पास करता है. Photopea का कोड बहुत छोटा और खराब दिखता है. हालांकि, नीचे दिए गए स्निपेट को समझना मुश्किल नहीं है. LaunchQueue इंटरफ़ेस (N के तौर पर छोटा किया गया) में setConsumer() मैथड है, जो आर्ग्युमेंट के तौर पर फ़ंक्शन स्वीकार करता है. यह फ़ंक्शन, W के तौर पर छोटा किया गया LaunchParams ऑब्जेक्ट लेता है. इस LaunchParams ऑब्जेक्ट में एक files प्रॉपर्टी है, जो FileSystemHandle ऑब्जेक्ट के रीड-ओनली कलेक्शन पर ले जाती है. इसके बाद, बाकी कोड उस कलेक्शन में मौजूद हर ऑब्जेक्ट के लिए, getFile() को कॉल करके File ऑब्जेक्ट (G के तौर पर छोटा किया गया) पाता है. इसके बाद, इस फ़ाइल को Photopea में मौजूद अन्य लॉजिक को भेज दिया जाता है, जो फ़ाइल को दिखाने का काम करता है.

var N = window.launchQueue;
if (N) {
  var $ = this.UA;
  N.setConsumer(function (W) {
    var O = W.files;
    console.log(O);
    for (var Y = 0; Y < O.length; Y++) {
      var T = O[Y];
      T.getFile().then(function (G) {
        $.YO([G], null, null, null, [T]);
      });
    }
  });
}

मीटिंग में सामने आए नतीजे

Photopea को इमेज के लिए फ़ाइल हैंडलर बनाने का अनुरोध, उपयोगकर्ता लंबे समय से कर रहे हैं. साल 2020 में जब यह सवाल पूछा गया था, तब इस सुविधा के बारे में सोचा भी नहीं जा सकता था. हालांकि, एक उत्साही उपयोगकर्ता ने फ़ाइल मैनेज करने वाले एपीआई को 2022 की शुरुआत में, उसके शुरुआती चरणों में खोजा. तब यह सुविधा फ़्लैग के पीछे थी. फ़ाइल मैनेज करने की सुविधा, आखिरकार Chrome 102 में लॉन्च हुई. यह Photopea की एक लोकप्रिय सुविधा है, जिसका इस्तेमाल लोग रोज़ाना करते हैं. कुछ लोग तो इसे गेम चेंजर तक कहते हैं. Photopea को आज़माना न भूलें. इसे अपने डेस्कटॉप पर इंस्टॉल करें और फिर उसमें काम करने वाले फ़ाइल फ़ॉर्मैट में से किसी एक को खोलने की कोशिश करें! इमेज एडिट करने के लिए शुभकामनाएं!