Подтвердить что ты не робот

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

У меня есть изображение 2448x3264 на моей SD-карте, которая потребляет 1 667 072 байта, но когда я загружаю его как растровое изображение и вычисляю его размер, используя getRowBytes()*getHeight(), я получаю 15 980 544 байта.

Почему это происходит и как я могу рассчитать фактический размер файла?

4b9b3361

Ответ 1

Это потому, что изображение сжимается, когда оно находится на диске (сохраняется в формате JPG, PNG или в подобном формате). После загрузки изображения в память он больше не сжимается и занимает столько же памяти, сколько необходимо для всех пикселей (обычно ширина * высота * 4 для RGBA_8888 или ширина * высота * 2 для RGB_565).