अल्ट्रा एचडीआर में मौजूद इमेज में बदलाव करना

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

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

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

अल्ट्रा एचडीआर फ़ॉर्मैट की खास जानकारी

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

  • मुख्य इमेज में, इमेज के हर पिक्सल के लिए रंग की जानकारी होती है.
  • गेन मैप, स्टैंडर्ड JPEG इमेज होती है. इसका अनुपात, मुख्य इमेज के अनुपात के बराबर होता है. हालांकि, यह ज़रूरी नहीं है कि इसके पिक्सल डाइमेंशन भी मुख्य इमेज के पिक्सल डाइमेंशन के बराबर हों. गेन मैप का हर पिक्सल, मुख्य इमेज के उस हिस्से की चमक के बारे में बताता है जो उससे जुड़ा होता है.

गेन मैप, ग्रेस्केल या कलर में हो सकता है. अगर गेन मैप कलर में है, तो गेन मैप का हर कलर चैनल, मुख्य इमेज के उस हिस्से के कलर चैनल की चमक के बारे में बताता है जो उससे जुड़ा होता है. अगर गेन मैप ग्रेस्केल में है, तो गेन मैप का हर पिक्सल, मुख्य इमेज के उस हिस्से के तीनों कलर चैनल की चमक के बारे में बताता है जो उससे जुड़ा होता है.

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

अल्ट्रा एचडीआर में सामान्य बदलाव

अगर अल्ट्रा एचडीआर इमेज में सामान्य बदलाव करने के लिए, Android के Bitmap एपीआई का इस्तेमाल किया जाता है, तो ये तरीके गेन मैप में ज़रूरी बदलाव करते हैं. Bitmap के इन ऑपरेशन्स की सुविधा उपलब्ध है:

  • घुमाना: अगर अल्ट्रा एचडीआर इमेज को घुमाया जाता है, तो यह तरीका गेन मैप को भी घुमा देता है.
  • काटना: अगर अल्ट्रा एचडीआर इमेज को काटा जाता है, तो यह तरीका गेन मैप को भी उसी अनुपात में काट देता है.
  • स्केल करना: अगर अल्ट्रा एचडीआर इमेज को स्केल किया जाता है, तो यह तरीका गेन मैप को भी स्केल कर देता है. इससे, रीसाइज़ की गई मुख्य इमेज की चौड़ाई और ऊंचाई की आधी चौड़ाई और ऊंचाई वाला गेन मैप बनता है.

हर मामले में, रोशनी की जानकारी सुरक्षित रहती है.

अल्ट्रा एचडीआर में बेहतर बदलाव

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

आम तौर पर, इन बदलावों की वजह से ऐसा हो सकता है:

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

हर मामले में, रोशनी और रंग की चमक की पुरानी जानकारी सुरक्षित रहती है. हालांकि, हो सकता है कि यह बदली गई इमेज के लिए सही न हो.

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

  1. इमेज का मौजूदा गेन मैप फ़ेच करें और उसे कैश मेमोरी में सेव करें. इसके लिए, Bitmap.getGainmap() को कॉल करें.
  2. मुख्य इमेज में अपनी ज़रूरत के हिसाब से बदलाव करें.
  3. कैश मेमोरी में सेव किए गए गेन मैप में, मुख्य इमेज में किए गए बदलावों के हिसाब से बदलाव करें. उदाहरण के लिए, अगर आपने मुख्य इमेज पर कोई इमोजी चिपकाया है, तो गेन मैप के उस हिस्से की वैल्यू को न्यूट्रल वैल्यू पर सेट किया जा सकता है. जैसे, Color.GRAY.

  4. Bitmap.setGainmap() को कॉल करके, बदले गए गेन मैप को इमेज पर वापस लागू करें.

अन्य संसाधन

अल्ट्रा एचडीआर इमेज के बारे में ज़्यादा जानने के लिए, ये संसाधन देखें: