Почему размер битмапа больше в памяти, чем на диске в Android?
У меня есть изображение 2448x3264 на моей SD-карте, которая потребляет 1 667 072 байта, но когда я загружаю его как растровое изображение и вычисляю его размер, используя getRowBytes()*getHeight()
, я получаю 15 980 544 байта.
Почему это происходит и как я могу рассчитать фактический размер файла?
Ответы
Ответ 1
Это потому, что изображение сжимается, когда оно находится на диске (сохраняется в формате JPG, PNG или в подобном формате). После загрузки изображения в память он больше не сжимается и занимает столько же памяти, сколько необходимо для всех пикселей (обычно ширина * высота * 4 для RGBA_8888 или ширина * высота * 2 для RGB_565).