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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

अन्य संसाधन

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