android MAT(ग्रहण मेमोरी एनालाइज़र)-मेमोरी डंप से बिटमैप कैसे देखें




bitmap memory-dump (2)

मैं एक्लिप्स मेमोरी एनालाइज़र (जिसे MAT भी कहा जाता है) की मदद से अपने एंड्रॉइड ऐप की मेमोरी उपयोग का विश्लेषण कर रहा हूं। कभी-कभी मुझे android.graphics.Bitmap वर्ग के अजीब उदाहरण मिल सकते हैं, ढेर के बड़े हिस्से का उपयोग कर सकते हैं। समस्या यह है कि मैं इस बिटमैप का स्रोत नहीं ढूँढ सकता, कोई फ़ाइल नाम नहीं, कोई संसाधन नहीं, कुछ भी नहीं। बिटमैप के लिए मुझे जो भी जानकारी मिल सकती है, वह निम्नलिखित है:

छवि पिक्सेल की सरणी के साथ एक फ़ील्ड mBuffer , मुझे लगता है। लेकिन यह कुछ आंतरिक एंड्रॉइड प्रारूप में है, पीएनजी नहीं।

प्रश्न : मैं मेमोरी डंप से इस बिटमैप द्वारा प्रस्तुत छवि को कैसे देख सकता हूं?


मुझे ऐसे बिटमैप को देखने का एक तरीका मिला है:

  • सबसे पहले, आपको GIMP डाउनलोड और इंस्टॉल करना होगा
  • इसके बाद, अपने Bitmap ऑब्जेक्ट को MAT में खोजें, mBuffer फ़ील्ड पर राइट-क्लिक करें, पॉपअप मेनू में "कॉपी" -> "सेव वैल्यू टू फाइल" मेनू आइटम चुनें और इस एरे का मान कुछ फाइल में सेव करें।
  • उस फ़ाइल को एक्सटेंशन .data दें
  • GIMP लॉन्च करें, "फ़ाइल" -> "खोलें" चुनें, अपनी .data फ़ाइल चुनें और ओपन बटन पर क्लिक करें
  • "रॉ इमेज से लोड इमेज" डायलॉग दिखाई देगा। यहां आपको अपने बिटमैप के लिए सही पैरामीटर सेट करने की आवश्यकता है
  • सबसे पहले, "छवि प्रकार" को "RGB अल्फा" चुनें (अधिकांश Android संसाधनों में यह छवि प्रकार है, लेकिन आपको अन्य छवि प्रकारों के साथ प्रयोग करने की आवश्यकता हो सकती है)
  • दूसरा, अपने बिटमैप के लिए सही चौड़ाई और ऊँचाई सेट करें (मेमोरी डंप में सही आयाम मिल सकते हैं)

उस बिंदु पर आपको पहले से ही मूल छवि का पूर्वावलोकन देखना चाहिए। यदि आपने नहीं किया है, तो आप "रॉ डेटा से लोड इमेज" संवाद में कुछ अन्य मापदंडों को बदलने की कोशिश कर सकते हैं।

नोट: छवि की चौड़ाई और ऊँचाई प्राप्त करने के लिए आप mWidth और mHeight फ़ील्ड्स को MAT में गुण अनुभाग में देख सकते हैं जैसा कि प्रश्न में छवि में दिखाया गया है।


आप कमांड लाइन पर ImageMagick साथ मेमोरी डंप को MAT से png में बदल सकते हैं।

MAT में संबंधित Bitmap ऑब्जेक्ट के लिए राइट क्लिक mBuffer फ़ील्ड और "कॉपी" -> "सेव वैल्यू टू फाइल" का चयन करें, फाइल को .rgba एक्सटेंशन के साथ नाम .rgba

आपको mWidth और mHeight फ़ील्ड से बिटमैप की चौड़ाई और ऊँचाई को नोट करने की आवश्यकता है, जिसे आप बिटमैप ऑब्जेक्ट में देख सकते हैं।

ImageMagick कमांड लाइन उपकरण स्थापित होने के लिए (Ubuntu apt-get install imagemagick ), आप निम्न पैरामीटर्स के साथ convert कमांड जारी करते हैं।

convert -size 'width'x'height' -depth 8 filename.rgba filename.png

उदाहरण के लिए

 convert -size 680x1209 -depth 8 phone_decor.rgba phone_decor.png

आप आसानी से Ubuntu पर eog phone_decor.rgba तरह eog phone_decor.rgba माध्यम से उत्पन्न png फ़ाइल की जाँच कर सकते हैं।





eclipse-memory-analyzer