Photoshop ने ऐसी फ़ाइलों पर काम करने का तरीका अपनाया जो मेमोरी में फ़िट हो सकने वाली फ़ाइलों से बड़ी हैं

जानें कि Adobe, Photoshop के पुराने Photoshop ऐप्लिकेशन के वेब वर्शन पर मौजूद सबसे बड़ी फ़ाइलों में भी बदलाव करने की सुविधा कैसे देता है.

नबील अल-शम्मा
नबील अल-शम्मा
थॉमस स्टेनर
थॉमस स्टेनर

शुरुआती जानकारी

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

साल 2021 में, Adobe ने Chrome इंजीनियरिंग के साथ मिलकर, वेब पर Photoshop का एक वर्शन उपलब्ध कराया. यह सॉफ़्टवेयर, WebAssembly का इनोवेटिव सुविधाओं का इस्तेमाल करता है. जैसे, SIMD, ऑरिजिन प्राइवेट फ़ाइल सिस्टम में ज़्यादा परफ़ॉर्मेंस वाला स्टोरेज, कैनवस के लिए P3 कलर स्पेस, और Lit के साथ वेब कॉम्पोनेंट. इस लेख में, हम इस बात पर फ़ोकस करना चाहते हैं कि Adobe Photoshop की इंजीनियरिंग ने किस तरह ऐसी फ़ाइलों का इस्तेमाल किया जो मेमोरी में फ़िट हो सकने वाली फ़ाइलों से बड़ी होती हैं. साथ ही, WebAssembly के मामले में, Photoshop, Wasm32 के 32-बिट एड्रेस स्पेस से बड़ी फ़ाइलों के साथ कैसे काम करता है.

Photoshop ऐप्लिकेशन की इमेज, जिसमें Project Fugu ऐप्लिकेशन की इमेज में बदलाव करते हुए दिखाया गया है.

समस्या

किसी फ़ाइल को बदलाव करने के लिए खोलने के लिए, बहुत ज़्यादा मेमोरी की ज़रूरत होती है. यह, किसी फ़ाइल को देखने के लिए खोलने के मुकाबले काफ़ी ज़्यादा है. Photoshop में बदलाव की गई फ़ाइलों को अक्सर उपयोगकर्ता के डिवाइस से ज़्यादा मेमोरी की ज़रूरत होती है. ऐसा सॉफ़्टवेयर में मिलने वाली कई सुविधाओं की वजह से होता है. डिजिटल डिज़ाइन के टाइप और एडिटिंग के लिए इस्तेमाल होने वाले डिजिटल डिज़ाइन और उपयोगकर्ता के डिवाइस में मौजूद सुविधाओं की वजह से ऐसा होता है.

Photoshop फ़ाइल फ़ॉर्मैट में डेटा को लॉसलेस कंप्रेशन के साथ सेव किया जाता है. जब किसी फ़ाइल या दस्तावेज़ को पढ़ा जाता है, तो ज़्यादा बेहतर प्रोसेसिंग के लिए, इमेज के पूरे डेटा को डीकंप्रेस किया जाता है. इस वजह से, हो सकता है कि किसी दस्तावेज़ के लिए, डिस्क या क्लाउड स्टोरेज में खाली जगह, खाली जगह से कई गुना ज़्यादा हो जाए.

Photoshop में, पहले जैसा करने का एक बड़ा इतिहास मौजूद है. फ़ोटोशॉप में होने वाले कई ऑपरेशन को विनाशकारी ऑपरेशन कहा जाता है. इसका मतलब है कि ब्रश से पेंटिंग जैसा कोई बदलाव करने पर, नए पिक्सल का डेटा मिलेगा. यह डेटा, मूल पिक्सल के डेटा जितना ही बड़ा हो सकता है. लंबे संपादन सत्र में ये संपादन करने से बड़ी मात्रा में पिक्सेल डेटा मिलता है, जिसे पूर्ववत करने की कार्रवाई में सहायता के लिए रखा जाना चाहिए. इस तरह, इतिहास कई सौ मेगाबाइट या कई गीगाबाइट (जीबी) डेटा तक बढ़ सकता है.

डिवाइस और प्लैटफ़ॉर्म, फिर चाहे वे डेस्कटॉप मशीन हों, मोबाइल डिवाइस या ब्राउज़र हों, सभी मेमोरी को मैनेज करते हैं. कुछ ऐप्लिकेशन में कितनी मेमोरी उपलब्ध होती है, इस बारे में दूसरों के मुकाबले ज़्यादा बेहतर होते हैं. जैसा कि आपको पता होता है कि नया कंप्यूटर या डिवाइस ऑर्डर करते समय और रैंडम-ऐक्सेस मेमोरी (रैम) की मनचाही मात्रा तय करते समय, अलग-अलग डिवाइस के लिए मेमोरी की मात्रा भी अलग-अलग होती है. इनमें से कई प्लैटफ़ॉर्म वर्चुअल मेमोरी की सुविधा देते हैं. इस वजह से, कोई ऐप्लिकेशन मौजूदा मेमोरी से ज़्यादा मेमोरी का इस्तेमाल कर सकता है. यह सहायता, ऑपरेटिंग सिस्टम और रनटाइम के हिसाब से अलग-अलग होती है, जैसा कि WebAssembly के मामले में है. ऐसा हो सकता है कि ऐप्लिकेशन इस सुविधा को आसानी से ऐक्सेस न कर पाएं या इसका इस्तेमाल न कर पाएं. इसके अलावा, मॉडर्न वर्चुअल सिस्टम की ऊपरी सीमाएं भी Photoshop की शर्तों से ज़्यादा हैं.

आदर्श रूप से, ऐप्लिकेशन उतनी मेमोरी इस्तेमाल करेंगे जितनी उन्हें ज़रूरत है. आम तौर पर, इसकी मदद से वे अपने उपयोगकर्ताओं को सबसे अच्छी परफ़ॉर्मेंस दे पाते हैं. हालांकि, अगर वे बहुत ज़्यादा मेमोरी का इस्तेमाल करते हैं, तो रनटाइम प्लैटफ़ॉर्म से उन पर कार्रवाई की जा सकती है. इसके अलावा, यह भी हो सकता है कि मेमोरी खत्म हो जाए. इसकी वजह से, ऐप्लिकेशन इंस्टॉल नहीं हो सकते.

याद रखें कि Photoshop को मूल समस्या macOS के पुराने वर्शन पर प्रिंट रिज़ॉल्यूशन वाली फ़ाइलों में बदलाव करने की ज़रूरत थी. ओएस और सभी ऐप्लिकेशन के लिए इसका साइज़ 1 एमबी से कम होना चाहिए. सीएमवाईके में 300 डीपीआई वाले पूरे पेज की इमेज बिना कंप्रेस किए करीब 32 एमबी की होती है.

समाधान

ऐप्लिकेशन में उपलब्ध जगह से ज़्यादा रैम की समस्या को हल करने के लिए, Photoshop ने सॉफ़्टवेयर वर्चुअल मेमोरी सिस्टम (VM) लागू किया. Photoshop, दस्तावेज़ का डेटा, खास तौर पर इमेज के डेटा के साथ-साथ, पहले जैसा करने के इतिहास और स्थिति से जुड़े सभी डेटा को मैनेज करने के लिए, वीएम का इस्तेमाल करता है. साथ ही, मौजूदा निर्देश के लिए उपलब्ध स्टोरेज को भी मैनेज करता है. इसका इस्तेमाल ब्रश के ब्यौरे जैसे डेटा के बड़े ब्लॉक को कैश मेमोरी में सेव करने के लिए भी किया जाता है. इससे उन्हें डिस्क से सिर्फ़ एक बार क्रम से लगाने की ज़रूरत होती है.

वर्चुअल मशीन (वीएम) के ज़रिए मैनेज किए जाने वाले पहलुओं में से एक के उदाहरण के तौर पर, इमेज डेटा को mipmap वर्शन का इस्तेमाल करके स्टोर किया जाता है. यह टाइल का पिरामिड के तौर पर बनाया गया सेट है. इसमें कम से ज़्यादा रिज़ॉल्यूशन का इमेज डेटा होता है. इससे Photoshop को ज़ूम इन या झलक देखने पर या ज़ूम आउट करने पर तुरंत रिस्पॉन्स के लिए, सही रिज़ॉल्यूशन डेटा पर काम करने में मदद मिलती है.

मिपमैप इमेज स्टोरेज का उदाहरण: बाईं ओर दी गई मुख्य इमेज के साथ कम साइज़ की फ़िल्टर की गई कॉपी शामिल हैं.

ऐप्लिकेशन शुरू करने के दौरान, Photoshop यह तय करता है कि कितनी रैम उपलब्ध है. यह प्रॉपर्टी का एक हिस्सा अलग कर देता है, ताकि वीएम में डेटा सेव हो सके. बाकी रैम, ऐप्लिकेशन की अन्य ज़रूरतों के लिए उपलब्ध है. इसे इस्तेमाल करने के लिए, स्टैंडर्ड C++ रनटाइम लाइब्रेरी का इस्तेमाल किया जाता है. वीएम मेमोरी को पेज में बांटा जाता है. आम तौर पर, हर पेज डिवाइस के हार्डवेयर पेज के साइज़ का मल्टीप्लायर होता है. इमेज डेटा के लिए इस्तेमाल किए जाने पर, मेमोरी को टाइल कहा जाता है. टाइल, एक लेयर के पिक्सल का स्क्वेयर एरिया होता है, जिसमें ज्यामिति के दायरे भी शामिल होते हैं. टाइल, एक या उससे ज़्यादा पेजों का इस्तेमाल करती है.

Photoshop, वीएम पेजों के लिए डिस्क पर आधारित बैकिंग देने के लिए एक या ज़्यादा स्क्रैच फ़ाइलें बनाता है. ये स्क्रैच फ़ाइलें, ऑरिजिन प्राइवेट फ़ाइल सिस्टम में सेव की जाती हैं. किसी इमेज एडिटिंग सेशन के दौरान, इस तरह की स्क्रैच फ़ाइल (पीले रंग में हाइलाइट की गई) और अन्य फ़ाइलों की हैरारकी का उदाहरण दिया गया है. हर स्क्रैच फ़ाइल में कई वीएम पेज हो सकते हैं. जब वीएम को ज़्यादा बैक अप की ज़रूरत होती है, तो अतिरिक्त स्क्रैच फ़ाइलें बनती हैं. जैसे-जैसे पेज खाली होते जाते हैं, वैसे-वैसे स्क्रैच फ़ाइल में उनके स्पेस को नए पेजों के लिए फिर से इस्तेमाल किया जा सकता है.

OPFS एक्सप्लोरर Chrome एक्सटेंशन की मदद से, Photoshop के ऑरिजिन निजी फ़ाइल सिस्टम फ़ाइल के क्रम की जांच करना.

इमेज डेटा को प्रोसेस करते समय Photoshop, टाइल के ऊपर बार-बार चलता रहता है और पिक्सल कैलकुलेशन करता है. हर कैलकुलेशन में कई टाइल का रेफ़रंस दिया जा सकता है. वीएम यह पक्का करने के लिए ज़िम्मेदार है कि इटरेशन के मौजूदा इटरेशन के लिए सोर्स और डेस्टिनेशन टाइल, मेमोरी में हों. साथ ही, उन्हें स्क्रैच फ़ाइलों से ज़रूरत के मुताबिक लोड किया जा सके. साथ ही, यह पेजों को स्क्रैच फ़ाइलों में फ़्लश कर सकता है, ताकि मेमोरी में जगह बनाई जा सके.

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

वर्चुअल मशीन (वीएम) को लागू करने की सटीक जानकारी, इस दस्तावेज़ के दायरे से कहीं ज़्यादा होगी (और Adobe के मालिकाना हक वाली भी है), लेकिन समाधान के बारे में ज़्यादा जानकारी के साथ, हमने आपको ऐसी जगह दी है जहां से आप समझ पाएंगे कि Photoshop बड़ी फ़ाइलों के साथ कैसे काम कर सकता है. ऑरिजिन निजी फ़ाइल सिस्टम, जिसकी मदद से फ़ाइलों को पढ़ने और उनमें बदलाव करने का बेहतर ऐक्सेस मिलता है, इस समाधान का अहम हिस्सा है.

स्वीकार हैं

इस ब्लॉग पोस्ट की समीक्षा ऑलिवर अंटर एकर और रेचल एंड्रू ने की थी. Photoshop वीएम पर शानदार दस्तावेज़ बनाने के लिए रसेल विलियम्स को खास धन्यवाद.