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

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

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

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

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

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

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

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

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

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

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

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

हर मामले में, चमक की जानकारी सेव की जाती है.

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

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

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

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

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

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

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

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

अन्य संसाधन

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