2013-05-11 4 views
0

ImageView에로드하려고하는 이미지 (PNG)가 있습니다. 이 PNG 파일의 파일 크기는 390.6KB입니다.너비와 높이보다 큰 비트 맵 크기

일단이 PNG 파일을 비트 맵으로 디코딩하면 비트 맵 크기가 9MB를 초과합니다. 그러나 비트 맵의 ​​너비와 높이는 각각 1920과 1280입니다.

왜 bitmap> (bitmap.width * bitmap.height)의 크기입니까? 9MB는 내 응용 프로그램에 많이 사용되며 많은 다른 이미지가로드됩니다.

샘플 크기 (2/4)로이 이미지를 샘플링하려고하면 이미지의 너비와 높이가 비트 맵의 ​​크기와 함께 변경됩니다.

이 이미지를 메모리 크기로 축척하고 이미지의 너비와 높이를 보존하려면 어떻게합니까?

+0

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html합니다. 이미지 크기를 줄였습니다. – Raghunandan

+0

내 게시물에서 언급했듯이 2와 4의 inSampleSize를 사용하여 이미지 크기를 줄 였지만 이미지의 메모리 크기는 줄 였지만 동시에 1920/1280에서 이미지의 너비/높이가 줄어 들었습니다. 960/640 어느 것이 바람직하지 않습니다. – Shagan

+0

왜 비트 맵의 ​​메모리 크기가 (bitmap.width * bitmap.height)보다 큰지 알고 싶습니다. 상상할 수 있듯이 압축은 없습니다. – Shagan

답변

3

PNG는 최대 4 개의 채널 (ARGB)을 가질 수 있으므로 실제 메모리 소비는 각 픽셀이 4 개의 공백을 필요로하므로 width*height*4이됩니다.

당신은 꽤 많이 다른 이미지 형식의 유사한 계산을 수행 할 수 있습니다 width*height*channels

+0

예, PNG 파일입니다. 그러나 왜 비트 맵 메모리 크기> (bitmap.width * bitmap.height)입니까? – Shagan

+0

좋아 .. 아마도 내 오해 .. 파일의 크기는 9 MB == 1920 * 1280 * 4입니까? – Shagan

+2

@Shagan 채널 수가 중요합니다. [(1920 * 1280 * 4)/(1024 * 1024) = 9.3MB] (https://www.google.com/search?q=(1920+ * 1280 + * 4) % 2F) & aq = f & oq = (1920 + * + 1280 + * + 4) % 2F (1024 * 1024)) –