Tamaño de mapa de bits en Android programáticamente vs. Tamaño ADB

He buscado esto y encontré que para api menos de 12, generalmente lo que se usa es bitmap.getrowbytes * bitmap.getheight;

Sin embargo, para una imagen estoy obteniendo lo siguiente:

mBitmap.getRowBytes() = 320
mBitmap.getHeight() = 100
mBitmap.getWidth() = 80.

Así, según la fórmula anterior, obtengo 32,000.

Sin embargo, cuando reviso el archivo que estoy leyendo la imagen de mapa de bits de adb usando

ls -l

Entiendo que el tamaño es de 90Kb.

Estoy leyendo la imagen de la siguiente manera:

        Uri chosenImageUri = data.getData();
        if (chosenImageUri != null) {
            try {
       InputStream photoStream = getContentResolver().openInputStream(chosenImageUri);
          BitmapFactory.Options opts = new BitmapFactory.Options(); 
              opts.inSampleSize = 4;
              Bitmap mBitmap = BitmapFactory.decodeStream(photoStream,null, opts);
          photoStream.close();

} 
}

¿Por qué los resultados son diferentes? Gracias.

preguntado el 30 de junio de 12 a las 19:06

2 Respuestas

Ok, acabo de entender lo que está pasando. Voy a publicar esto en caso de que ayude a alguien.

La razón de esto es que estoy usando bitmapfactoryoptons junto con insamplesize =4.

Lo que ocurre es

Por ejemplo, inSampleSize == 4 devuelve una imagen que tiene 1/4 del ancho/alto del original y 1/16 del número de píxeles. Cualquier valor <= 1 se trata igual que 1.

como se mencionó aquí

Respondido el 30 de junio de 12 a las 19:06

La cantidad de memoria que ocupa una imagen en la RAM es diferente a la del disco. En la RAM, el consumo de memoria de la imagen se puede comprobar mediante la fórmula pixels*3 si es RGB y pixels*4 si es ARGB. El número de píxeles se puede encontrar por width*height. Su imagen debe tener un canal alfa, ya que 80*100*4 = 32,000. Tenga en cuenta que esto está en Bytes, y para obtenerlo en kB o MB, deberá dividirlo por 1024 y 1024 * 1024 respectivamente.

Respondido el 30 de junio de 12 a las 19:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.