Cómo ver realmente un mapa de bits tomado de un volcado de almacenamiento dinámico de Android

En el proceso de seguimiento de problemas graves de memoria en mi aplicación, miré varios volcados de almacenamiento dinámico desde mi aplicación, y la mayoría de las veces tengo un mapa de bits ENORME que no conozco.

Toma 9.4MB, o 9,830,400 bytes, o en realidad una imagen de 1280x1920 a 4 bytes por píxeles.

Revisé en Eclipse MAT, de hecho es un byte [9830400], que tiene una referencia entrante que es unandroid.graphics.Bitmap.

Me gustaría volcar esto en un archivo e intentar verlo. No puedo entender de dónde viene. Mi imagen más grande en todos mis elementos dibujables es un png de 640x960, que requiere menos de 3 MB.

Traté de usar Eclipse para "copiar el valor al archivo", pero creo que simplemente imprime el búfer en el archivo, y no conozco ningún software de imagen que pueda leer una secuencia de bytes y mostrarlo como 4 bytes por imagen de píxeles.

¿Alguna idea

Esto es lo que probé: volcar la matriz de bytes en un archivo, empujarlo a / sdcard / img y cargar una actividad como esta:

@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");
    }
}

No vi nada.

¿Sabes cómo se codifica la imagen? Digamos que está almacenado enbyte[] buffer. buffer[0] es rojo,buffer[1] es verde, etc.?

Respuestas a la pregunta(10)

Su respuesta a la pregunta