फ़ाइल हैंडलिंग एपीआई, वेब ऐप्लिकेशन को उन फ़ाइल फ़ॉर्मैट के लिए खुद को फ़ाइल हैंडलर के तौर पर रजिस्टर करने देता है जो ऐप्लिकेशन के साथ काम कर सकता है. जानें कि फ़ोटो में बदलाव करने वाला ऐप्लिकेशन Photopea, इस एपीआई का इस्तेमाल कैसे करता है.
शुरुआती जानकारी
(यह लेख वीडियो के रूप में भी उपलब्ध है.)
Photopea एक मुफ़्त ऑनलाइन इमेज एडिटर है. इसे इवान कुटस्कीर ने बनाया है. इवान ने इस ऐप्लिकेशन पर 2012 से काम करना शुरू किया. उन्होंने Photospea में जोड़ी जाने वाली मुख्य सुविधाओं के बारे में एक ब्लॉग पब्लिश किया है. Photopea, PSD (Adobe Photoshop), XCF (GIMP), Sketch (Sketch ऐप्लिकेशन), XD (Adobe XD), और CDR (CorelDRAW) फ़ॉर्मैट के साथ काम कर सकता है.
Photopea में फ़ाइल मैनेज करने की सुविधा
जब उपयोगकर्ता ऐप्लिकेशन इंस्टॉल करने का विकल्प चुनता है, तो Photopea एक स्टैंडअलोन विंडो में काम करता है. यह इंस्टॉल किए जा सकने वाले PWA के तौर पर काम करता है. ऐसा करने से, Photopea को PWA की सुपर पावर मिलती है. इसके लिए, Photopea एक अलग विंडो में काम करता है: फ़ाइल मैनेज करने का तरीका.
फ़ाइल मैनेज करने वाले एपीआई का डिक्लेरेटिव हिस्सा
इंस्टॉल करने के बाद, Photopea अपने-आप को ऑपरेटिंग सिस्टम पर एक फ़ाइल हैंडलर के तौर पर रजिस्टर कर लेता है. इसके लिए, यह ऐप्लिकेशन के साथ काम करने वाले अलग-अलग फ़ाइल फ़ॉर्मैट का इस्तेमाल करता है. file_handlers
फ़ील्ड को जोड़कर, वेब ऐप्लिकेशन मेनिफ़ेस्ट में ऐसा किया जाता है. इस्तेमाल किया जा सकने वाला हर फ़ाइल टाइप एक ऑब्जेक्ट है. action
की वैल्यू के तौर पर, मिलता-जुलता यूआरएल होता है. साथ ही, accept
MIME टाइप और उससे जुड़े फ़ाइल एक्सटेंशन का मैप ऑब्जेक्ट होता है. उदाहरण के लिए, {"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"]
}
]
}
}
}
फ़ाइल मैनेज करने वाले एपीआई का ज़रूरी हिस्सा
इसके बाद, एपीआई का ज़रूरी हिस्सा उन फ़ाइलों को मैनेज करता है जिन्हें ऑपरेटिंग सिस्टम PWA को भेजा जाता है. Photopea का कोड बहुत छोटा और अस्पष्ट है, लेकिन फिर भी नीचे दिए गए स्निपेट की मुख्य जानकारी को समझना इतना मुश्किल नहीं है. LaunchQueue
इंटरफ़ेस (जिसे N
के तौर पर बताया गया है) का एक setConsumer()
तरीका है, जो फ़ंक्शन को तर्क के तौर पर स्वीकार करता है. यह फ़ंक्शन बदले में LaunchParams
ऑब्जेक्ट (W
के रूप में छोटा किया जाता है) लेता है. इस 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 को एक बार आज़माएं और उसे अपने डेस्कटॉप पर इंस्टॉल करें. इसके बाद, उस फ़ाइल फ़ॉर्मैट को खोलें जो इसके साथ काम करती है! इमेज एडिटिंग का आनंद लें!