MAT (Анализатор памяти Eclipse) – как просмотреть растровые изображения из дампа памяти

StackOverflow https://stackoverflow.com//questions/12709603

Вопрос

Я анализирую использование памяти моего приложения для Android с помощью Анализатор памяти Eclipse (также известный как МАТ).Иногда я могу найти странные случаи android.graphics.Bitmap class, использующий большую часть кучи.Проблема в том, что я не могу найти источник этих растровых изображений, нет. имя файла, нет идентификатор ресурса, ничего.Вся информация, которую я могу найти для растрового изображения, следующая:bitmap_info

Есть поле 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 легко.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top