Как на самом деле увидеть растровое изображение, взятое из дампа кучи Android

В процессе отслеживания серьезных проблем с памятью в моем приложении я просмотрел несколько дампов кучи из своего приложения, и большую часть времени у меня есть ОГРОМНОЕ растровое изображение, которое я не понимаю. знать о.

Он занимает 9,4 МБ, или 9 830 400 байт, или фактически изображение размером 1280x1920 с 4 байтами на пиксель.

Я проверил в Eclipse MAT, это действительно байт[9830400], который имеет одну входящую ссылку, которая является android.graphics.Bitmap.

Я бы хотел сохранить это в файл и попробовать посмотреть. Я не могу понять, откуда это идет. Мое самое большое изображение во всех моих чертежах — это png 640x960, который занимает менее 3 МБ.

Я пытался использовать Eclipse для «копирования значения в файл», но я думаю, что он просто печатает буфер в файл, и я не знаю никакого программного обеспечения для обработки изображений, которое могло бы считывать поток байтов и отображать его как 4 байт на пиксель изображения.

Есть идеи?

Вот что я пробовал: выгрузить массив байтов в файл, отправить его в /sdcard/img и загрузить такую ​​активность:

@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    try {
        final File inputFile = new File("/sdcard/img");
        final FileInputStream isr = new FileInputStream(inputFile);
        final Bitmap bmp = BitmapFactory.decodeStream(isr);
        ImageView iv = new ImageView(this);
        iv.setImageBitmap(bmp);
        setContentView(iv);
        Log.d("ImageTest", "Image was inflated");
    } catch (final FileNotFoundException e) {
        Log.d("ImageTest", "Image was not inflated");
    }
}

Я ничего не увидел.

Знаете ли вы, как кодируется изображение? Скажем, он хранится в буфере byte[].буфер[0] красный, буфер[1] зеленый и т. д.?

6
задан Benoit Duffez 8 March 2012 в 10:59
поделиться