PNG Занимает ли прозрачный пиксель память? - PullRequest
3 голосов
/ 19 декабря 2011

Я делаю игру для Android и использую прозрачные PNG. Но занимает ли прозрачная часть большую память?

Например, если у меня есть PNG, который является 512*512, который является прозрачным, занимает ли это такое же количество RAM и или ROM, как и у 256*246 ??

// Simon

Ответы [ 2 ]

7 голосов
/ 19 декабря 2011

Размер полностью зависит от разрешения снимков при сжатии в памяти.

Если у вас есть пиксель с прозрачностью (альфа-канал) , вы, скорее всего, используете ARGB8888 в качестве формата изображения. При этом каждый пиксель занимает 4 байта в памяти. Это означает, что изображение размером 512x512 пикселей занимает (512*512*4) bytes = 1 MB, а меньшее - (256*246*4) bytes = 246 kB.

Если пиксели прозрачные (невидимые) или не имеет значения. Уместны только разрешение и внутренний формат.

4 голосов
/ 19 декабря 2011

Когда ваше изображение загружается в память, оно будет растровым, независимо от того, каким был исходный формат на диске, поэтому это действительно зависит от того, с каким Конфиг вы загрузите свое изображение.
Если вы загрузите свое изображение как ARGB_8888, каждый компонент цвета каждого пикселя изображения займет один байт, то есть альфа (прозрачность) займет одну четвертую общей памяти изображения и каждый пиксельбудет 4 байта.

  • Изображение размером 512x512 пикселей с прозрачностью займет около 1048 кБ памяти .
  • Без прозрачности это будет 786kB .
  • Нет цветового режима RGB_888, ближайший RGB_565 , который будет 524kB .
...