जानें कि Adobe ने किस तरह अपने जाने-माने Photoshop ऐप्लिकेशन के वेब वर्शन पर मौजूद सबसे बड़ी फ़ाइलों में भी बदलाव किया है.
शुरुआती जानकारी
(यह लेख, वीडियो के तौर पर भी उपलब्ध है.)
Adobe ने 2021 में Chrome इंजीनियरिंग के साथ मिलकर, वेब पर Photoshop का एक वर्शन लॉन्च किया. यह सॉफ़्टवेयर, सिमडी, ऑरिजिन प्राइवेट फ़ाइल सिस्टम में अच्छी परफ़ॉर्मेंस वाला स्टोरेज, कैनवस के लिए P3 कलर स्पेस, और Lit के साथ वेब कॉम्पोनेंट का इस्तेमाल करके, WebAssembly का बेहतरीन इस्तेमाल करता है. इस लेख में, हम इस बात पर फ़ोकस करना चाहते हैं कि Adobe Photoshop की इंजीनियरिंग टीम ने स्टोरेज में फ़िट होने वाली फ़ाइलों से ज़्यादा फ़ाइलों का इस्तेमाल कैसे किया. WebAssembly के मामले में, Wasm32 के 32-बिट पता स्पेस से बड़ी फ़ाइलों के साथ Photoshop काम कैसे करता है.
समस्या
किसी फ़ाइल में बदलाव करने के लिए उसे खोलने के लिए बहुत ज़्यादा मेमोरी की ज़रूरत होती है. यह मेमोरी, किसी फ़ाइल को देखने के लिए खोलने के मुकाबले काफ़ी ज़्यादा होती है. Photoshop में एडिट की गई फ़ाइलों के लिए डिवाइस में उपलब्ध स्टोरेज की तुलना में ज़्यादा स्टोरेज की ज़रूरत होती है. ऐसा कई वजहों से होता है. जैसे, सॉफ़्टवेयर में मिलने वाली अलग-अलग सुविधाएं, इसमें किस तरह के डिजिटल डिज़ाइन, एडिटिंग के लिए इसका इस्तेमाल होता है, और उपयोगकर्ताओं के डिवाइस में कौन-कौनसी सुविधाएं उपलब्ध हैं.
Photoshop फ़ाइल फ़ॉर्मैट में डेटा को कंप्रेस किए बिना सेव किया जाता है. जब किसी फ़ाइल या दस्तावेज़ को पढ़ा जाता है, तो बेहतर तरीके से प्रोसेसिंग के लिए, इमेज के पूरे डेटा को डीकंप्रेस किया जाता है. इस वजह से, किसी दस्तावेज़ के लिए डिस्क या क्लाउड स्टोरेज में इस्तेमाल की जाने वाली मेमोरी से कई गुना ज़्यादा मेमोरी हो सकती है.
Photoshop, पहले जैसा करने के बहुत बड़े इतिहास का इस्तेमाल करता है. Photoshop में कई सारी कार्रवाइयों को हम नुकसान पहुंचाने वाली कार्रवाइयां कहते हैं. इसका मतलब है कि ब्रश से पेंटिंग करने जैसा कोई बदलाव करने पर, नया पिक्सल डेटा मिलेगा जो ओरिजनल पिक्सल डेटा जितना ही बड़ा हो सकता है. लंबे एडिटिंग सेशन के दौरान इन बदलावों से काफ़ी पिक्सल डेटा मिलता है, जिसे पहले जैसा करने की प्रोसेस को पूरा करने के लिए खास तौर पर बनाए रखना ज़रूरी होता है. इस तरह, इतिहास कई सौ मेगाबाइट या कई गीगाबाइट (जीबी) डेटा तक का हो सकता है.
डिवाइस और प्लैटफ़ॉर्म, चाहे वे डेस्कटॉप डिवाइस हों, मोबाइल डिवाइस हो या ब्राउज़र, सभी मेमोरी को मैनेज करते हैं. कुछ कंपनियां, ऐप्लिकेशन के लिए उपलब्ध कराई जाने वाली मेमोरी को लेकर बेहतर होती हैं. मेमोरी की मात्रा हर डिवाइस के लिए अलग-अलग होती है, जैसा कि आपको पता है कि नया कंप्यूटर या डिवाइस ऑर्डर करते समय कितनी रैंडम-ऐक्सेस मेमोरी (रैम) तय की जाती है. इनमें से कई प्लैटफ़ॉर्म वर्चुअल मेमोरी की सुविधा भी देते हैं. इससे कोई ऐप्लिकेशन, असल में उपलब्ध मेमोरी से ज़्यादा मेमोरी का इस्तेमाल कर सकता है. यह काम, ऑपरेटिंग सिस्टम और रनटाइम के हिसाब से अलग-अलग हो सकता है. जैसा कि WebAssembly में होता है, हो सकता है कि ऐप्लिकेशन इसे आसानी से ऐक्सेस या इस्तेमाल न कर पाएं. इसके अलावा, आधुनिक वर्चुअल सिस्टम की ऊपरी सीमाएं भी होती हैं. इन सीमाओं को Photoshop की ज़रूरी शर्तों के मुताबिक पार करना पड़ता है.
आम तौर पर, ऐप्लिकेशन ज़रूरत के हिसाब से मेमोरी इस्तेमाल करेंगे. इससे आम तौर पर, वे अपने उपयोगकर्ताओं को सबसे अच्छी परफ़ॉर्मेंस दे पाते हैं. हालांकि, अगर वे ज़्यादा मेमोरी का इस्तेमाल करते हैं, तो रनटाइम प्लैटफ़ॉर्म से उन पर कार्रवाई की जा सकती है. इसके अलावा, उनकी मेमोरी खत्म हो सकती है, जिससे काम करना बंद कर दिया जाता है.
अब तक कहा जाए, तो जिस मूल समस्या को हल करने की ज़रूरत Photoshop को थी वह थी macOS के शुरुआती वर्शन पर प्रिंट रिज़ॉल्यूशन फ़ाइलों में बदलाव करना, ओएस और सभी ऐप्लिकेशन के लिए कम से कम 1 एमबी. सीएमवाईके में 300 डीपीआई पूरे पेज की इमेज, बिना कंप्रेस की करीब 32 एमबी की होती है.
समाधान
अगर ऐप्लिकेशन में तय सीमा से ज़्यादा रैम की समस्या है, तो Photoshop ने एक सॉफ़्टवेयर वर्चुअल मेमोरी सिस्टम (वीएम) लागू किया. Photoshop, दस्तावेज़ के डेटा, खास तौर पर इमेज के डेटा, पहले जैसा किए गए सभी बदलावों के इतिहास और स्थिति को मैनेज करने के लिए, वीएम का इस्तेमाल करता है. साथ ही, वह मौजूदा कमांड के लिए स्टोरेज का इस्तेमाल भी करता है. इसका इस्तेमाल डेटा के बड़े ब्लॉक को कैश मेमोरी में सेव करने के लिए भी किया जाता है, जैसे कि ब्रश की जानकारी. ऐसा इसलिए, ताकि उन्हें डिस्क से सिर्फ़ एक बार क्रम से लगाया जा सके.
वीएम से मैनेज किए जाने वाले पहलुओं में से एक के उदाहरण के तौर पर, इमेज डेटा को mipmap तरीके का इस्तेमाल करके स्टोर किया जाता है. यह टाइल का पिरामिड जैसा सेट होता है, जिससे कम से ज़्यादा रिज़ॉल्यूशन तक इमेज डेटा मिलता है. इससे Photoshop, ज़ूम इन करने या ज़ूम आउट करने पर, उसकी झलक देखने के दौरान तुरंत जवाब पाने के लिए, सही रिज़ॉल्यूशन डेटा का इस्तेमाल कर पाता है.
ऐप्लिकेशन शुरू करने के दौरान, Photoshop यह तय करता है कि कितनी रैम उपलब्ध है. यह सुविधा, वीएम में डेटा सेव करने के लिए एक हिस्सा अलग से सेट करती है. बची हुई रैम, स्टैंडर्ड C++ रनटाइम लाइब्रेरी के ज़रिए ऐप्लिकेशन से जुड़ी दूसरी ज़रूरतों के लिए उपलब्ध है. वीएम मेमोरी को पेजों में बांटा जाता है. आम तौर पर, हर पेज डिवाइस के हार्डवेयर पेज साइज़ के गुणज होता है. इमेज के डेटा के लिए इस्तेमाल किए जाने पर, मेमोरी का रेफ़रंस टाइल के तौर पर दिया जाता है. टाइल, किसी एक लेयर का पिक्सल का स्क्वेयर एरिया होती है, जिसमें ज्यामिति की सीमाएं शामिल होती हैं. कोई टाइल एक या उससे ज़्यादा पेज इस्तेमाल करती है.
Photoshop, वीएम पेजों के लिए डिस्क-आधारित बैकिंग की सुविधा देने के लिए एक या उससे ज़्यादा स्क्रैच फ़ाइलें बनाता है. ये स्क्रैच फ़ाइलें ऑरिजिन प्राइवेट फ़ाइल सिस्टम में स्टोर की जाती हैं. इस स्क्रीनशॉट में, किसी इमेज एडिटिंग सेशन के दौरान ऐसी स्क्रैच फ़ाइल (पीले रंग से हाइलाइट की गई) और दूसरी फ़ाइलों की उदाहरण के तौर पर दी गई हैरारकी दिखाई गई है. हर स्क्रैच फ़ाइल में कई वीएम पेज हो सकते हैं. जब वीएम को ज़्यादा बैकिंग की ज़रूरत होती है, तब यह और भी स्क्रैच फ़ाइलें बनाती है. जैसे-जैसे पेज खाली होते हैं, स्क्रैच फ़ाइल में उनकी जगह नए पेजों के लिए फिर से इस्तेमाल की जा सकती है.
इमेज के डेटा को प्रोसेस करते समय, Photoshop, टाइल पर फिर से घूमता है. इसके बाद, पिक्सल कैलकुलेशन करता है. हर कैलकुलेशन में एक से ज़्यादा टाइल हो सकती हैं. वर्चुअल मशीन (वीएम), यह पक्का करती है कि मौजूदा बदलाव के लिए सोर्स और डेस्टिनेशन टाइल, मेमोरी में हों. साथ ही, उन्हें ज़रूरत के मुताबिक स्क्रैच फ़ाइलों से लोड किया जा रहा हो. साथ ही, यह पेजों को स्क्रैच फ़ाइलों में फ़्लश कर सकता है, ताकि मेमोरी में जगह बनाई जा सके.
मीटिंग में सामने आए नतीजे
वर्चुअल मशीन (वीएम) को लागू करने के बारे में सटीक जानकारी, इस दस्तावेज़ के दायरे से बाहर है (और इसका मालिकाना हक Adobe के पास भी है). हमने इस समाधान के बारे में खास जानकारी दी है. हमने आपको ऐसी जगह पर रखा है जहां से यह समझा जा सकता है कि Photoshop बड़ी फ़ाइलों को कैसे मैनेज कर सकता है. इस सुविधा का एक अहम हिस्सा यह है कि ऑरिजिन प्राइवेट फ़ाइल सिस्टम, फ़ाइलों को पढ़ने और उनमें बदलाव करने की बेहतर परफ़ॉर्मेंस देता है.
स्वीकार की गई
इस ब्लॉग पोस्ट की समीक्षा ऑलिवर अंटर एकर और रेचल एंड्रयू ने की है. Photoshop वीएम से जुड़े बेहतरीन दस्तावेज़ तैयार करने के लिए रसेल विलियम्स का धन्यवाद.