Dlaczego Rozmiar bitmapy jest większy w pamięci niż na dysku w Androidzie?

Mam obraz 2448x3264 na mojej karcie SD, który pochłania 1,667,072 bajtów, ale kiedy Ładuję go jako bitmapę i obliczam jej rozmiar za pomocą getRowBytes()*getHeight(), kończę z 15,980,544 bajtów.

Dlaczego tak się dzieje i jak mogę obliczyć rzeczywisty rozmiar pliku?

Author: Rob Raisch, 2012-07-12

1 answers

Dzieje się tak dlatego, że obraz jest kompresowany, gdy znajduje się na dysku (przechowywany w formacie JPG, PNG lub podobnym). Po załadowaniu obrazu do pamięci nie jest on już skompresowany i zajmuje tyle pamięci, ile jest konieczne dla wszystkich pikseli (zazwyczaj szerokość * wysokość * 4 dla RGBA_8888 lub szerokość * wysokość * 2 dla RGB_565).

 41
Author: devunwired,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-12 21:41:24