MAT (Анализатор памяти Eclipse) – как просмотреть растровые изображения из дампа памяти
-
13-12-2019 - |
Вопрос
Я анализирую использование памяти моего приложения для Android с помощью Анализатор памяти Eclipse (также известный как МАТ).Иногда я могу найти странные случаи android.graphics.Bitmap
class, использующий большую часть кучи.Проблема в том, что я не могу найти источник этих растровых изображений, нет. имя файла, нет идентификатор ресурса, ничего.Вся информация, которую я могу найти для растрового изображения, следующая:
Есть поле mBuffer
Я полагаю, с массивом пикселей изображения.Но это какой-то внутренний формат Android, а не PNG.
Вопрос:как я могу просмотреть изображение, представленное этим растровым изображением, из дампа памяти?
Решение
Я нашел способ просмотра таких растровых изображений:
- Сначала вам нужно скачать и установить GIMP
- Далее найдите свой
Bitmap
объект в MAT, щелкните правой кнопкой мышиmBuffer
поле, во всплывающем меню выберите «Копировать» -> «Сохранить значение в файл» пункт меню и сохраните значение этого массива в какой-нибудь файл - дать продление
.data
в этот файл - запускаем GIMP, выбираем "Файл" -> "Открыть", выберите свой
.data
файл и нажмите Открыть кнопка - «Загрузить изображение из необработанных данных» появится диалог.Здесь вам необходимо установить правильные параметры для вашего растрового изображения.
- сначала выбери «Тип изображения» как «РГБ Альфа» (большинство ресурсов Android имеют этот тип изображений, но вам, возможно, придется поэкспериментировать с другими типами изображений)
- во-вторых, установите правильно Ширина и Высота для вашего растрового изображения (правильные размеры можно найти в дампе памяти)
На этом этапе вы уже должны наблюдать предварительный просмотр исходного изображения.Если вы этого не сделали, вы можете попробовать изменить некоторые другие параметры в «Загрузить изображение из необработанных данных» диалог.
ПРИМЕЧАНИЕ:чтобы получить ширину и высоту изображения, которое вы можете посмотреть mWidth
и mHeight
поля в MAT в разделе атрибутов, как показано на рассматриваемом изображении.
Другие советы
Вы можете конвертировать дампы памяти из MAT в PNG, используя ИзображениеМагия в командной строке.
В MAT
для связанных Bitmap
щелкните объект правой кнопкой мыши mBuffer
поле и выберите «Копировать» -> «Сохранить значение в файл», назовите файл с помощью .rgba
расширение.
Вам необходимо отметить ширину и высоту растрового изображения из mWidth
и mHeight
поля, которые вы можете увидеть в объекте Bitmap.
Имея 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
Вы можете проверить сгенерированный файл PNG через эог, нравиться eog phone_decor.rgba
на Ubuntu
легко.