इमेज की परफ़ॉर्मेंस ऑप्टिमाइज़ करना

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

सिर्फ़ अपनी ज़रूरत के बिट मैप का आकार लोड करें

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

इमेज के साइज़ को मैनेज करने के लिए:

  • अपनी इमेज फ़ाइलों का साइज़ कम करके, उन्हें छोटा करें. इससे इमेज पर कोई असर नहीं पड़ेगा आउटपुट इमेज).
  • अपनी इमेज को JPEG या PNG के बजाय WEBP फ़ॉर्मैट में बदलें.
  • अलग-अलग स्क्रीन रिज़ॉल्यूशन के लिए छोटी इमेज देना (सलाह #3 देखें),
  • इमेज लोड करने वाली लाइब्रेरी का इस्तेमाल करें. यह लाइब्रेरी, इमेज के छोटे-छोटे हिस्सों में फ़िट होने के लिए उसे फ़िट करती है स्क्रीन पर आपके व्यू का साइज़. इससे कॉन्टेंट लोड होने की परफ़ॉर्मेंस को बेहतर बनाने में मदद मिल सकती है आपकी स्क्रीन.

जहां भी हो सके, बिटमैप के ऊपर वेक्टर इस्तेमाल करें

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

अलग-अलग स्क्रीन साइज़ के लिए वैकल्पिक रिसॉर्स उपलब्ध कराएं

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

ImageBitmap का इस्तेमाल करते समय, ड्रॉइंग करने से पहले prepareToDraw पर कॉल करें

ImageBitmap का इस्तेमाल करते समय, टेक्सचर को जीपीयू, ड्रॉ करने से पहले ImageBitmap#prepareToDraw() पर कॉल करें. यह जीपीयू को टेक्सचर तैयार करने और परफ़ॉर्मेंस को बेहतर बनाने में मदद करता है विज़ुअल. इमेज लोड करने वाली ज़्यादातर लाइब्रेरी पहले से ही यह ऑप्टिमाइज़ेशन करती हैं, लेकिन अगर आप खुद ImageBitmap क्लास के साथ काम कर रहे हैं, तो ध्यान रखें.

Painter के बजाय, अपने कंपोज़ेबल में Int DrawableRes या यूआरएल को पैरामीटर के तौर पर पास करें

इमेज के साथ काम करने में आने वाली दिक्कतों की वजह से (उदाहरण के लिए, बराबर Bitmaps फ़ंक्शन का इस्तेमाल करना कंप्यूटेशनल रूप से महंगा होगा), तो Painter एपीआई साफ़ तौर पर स्टेबल क्लास के तौर पर मार्क नहीं किया गया है. स्थिर न रहने वाली क्लास में ये काम किए जा सकते हैं इसकी वजह से गै़र-ज़रूरी बदलाव हो जाते हैं, क्योंकि कंपाइलर आसानी से यह अनुमान नहीं लगा सकता कि क्या डेटा बदल गया है.

इसलिए, पैरामीटर के तौर पर किसी यूआरएल या ड्रॉ करने लायक संसाधन आईडी को पास करना बेहतर होता है Painter को पैरामीटर के रूप में पास करने के बजाय, उसे कंपोज़ेबल में जोड़ा जा सकता है.

// Prefer this:
@Composable
fun MyImage(url: String) {

}
// Over this:
@Composable
fun MyImage(painter: Painter) {

}

बिट मैप को मेमोरी में ज़रूरत से ज़्यादा समय तक सेव न करें

मेमोरी में जितने ज़्यादा बिटमैप लोड किए जाएंगे, आपके इस्तेमाल करने की संभावना उतनी ही ज़्यादा होगी मेमोरी में जगह नहीं बची है. उदाहरण के लिए, अगर इमेज की बड़ी सूची लोड की जा रही है, कंपोज़ेबल का कॉन्टेंट देखने के लिए, LazyColumn या LazyRow का इस्तेमाल करें, ताकि यह पक्का किया जा सके कि मेमोरी बड़ी सूची को स्क्रोल करने पर स्टोरेज खाली हो जाता है.

बड़ी इमेज को एएबी/APK फ़ाइल के साथ पैकेज न करें

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