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

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

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

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

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

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

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

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

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

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

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

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

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

अल्ट्रा एचडीआर फ़ोटो में बेहतर बदलाव करने की सुविधा

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

इन बदलावों की वजह से ऐसा हो सकता है:

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

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

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

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

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

अन्य संसाधन

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