먼저 두 가지 개념을 명확히 해야 합니다. 1. 비트맵: 여기서 제가 이해하는 것은 Android 시스템의 비트맵 이미지 형식으로, 일반적으로 메모리에만 존재하며 시스템에서 표시하는 데 사용됩니다. 2. 파일: 하드디스크나 플래시에 존재하는 파일로, 일반적으로 jpeg나 png 등 일종의 압축 방식을 사용합니다. 여기서는 비교 및 설명을 위해 jpeg와 비트맵을 예로 사용합니다. jpeg는 압축되어 저장에 적합하지만 직접 표시할 수 없으며 표시하기 전에 디코딩해야 합니다. 비트맵은 압축되지 않은 이미지이며 저장 공간을 너무 많이 차지하므로 저장에 적합하지 않습니다.
보이는 현상을 설명하자면 Windows에서는 이미지 파일의 크기가 102K인 것을 알 수 있습니다. : BitmapFactory를 통해 압축된 파일입니다. decodeStream () 메소드는 비트맵으로 변환하지만 750k의 메모리 할당이 필요합니다. 이때 압축된 파일은 메모리에 비트맵 파일로 압축 해제됩니다. 압축 해제 후 표시하기에 적합한 형식입니다. 구체적으로, okadanana의 대답은 FileOutputStream을 직접 사용하여 inputStream을 파일에 쓰는데, 파일 크기는 102k입니다입니다. 파일을 디코딩하지 않고 메모리에 넣으면 파일이 그대로 기록되며 물론 크기는 변경되지 않습니다.
먼저 두 가지 개념을 명확히 해야 합니다.
1. 비트맵: 여기서 제가 이해하는 것은 Android 시스템의 비트맵 이미지 형식으로, 일반적으로 메모리에만 존재하며 시스템에서 표시하는 데 사용됩니다.
2. 파일: 하드디스크나 플래시에 존재하는 파일로, 일반적으로 jpeg나 png 등 일종의 압축 방식을 사용합니다.
여기서는 비교 및 설명을 위해 jpeg와 비트맵을 예로 사용합니다.
jpeg는 압축되어 저장에 적합하지만 직접 표시할 수 없으며 표시하기 전에 디코딩해야 합니다.
비트맵은 압축되지 않은 이미지이며 저장 공간을 너무 많이 차지하므로 저장에 적합하지 않습니다.
보이는 현상을 설명하자면
Windows에서는 이미지 파일의 크기가 102K인 것을 알 수 있습니다. : BitmapFactory를 통해
압축된 파일입니다. decodeStream () 메소드는 비트맵으로 변환하지만 750k의 메모리 할당이 필요합니다. 이때 압축된 파일은 메모리에 비트맵 파일로 압축 해제됩니다. 압축 해제 후 표시하기에 적합한 형식입니다. 구체적으로, okadanana의 대답은
FileOutputStream을 직접 사용하여 inputStream을 파일에 쓰는데, 파일 크기는 102k입니다입니다. 파일을 디코딩하지 않고 메모리에 넣으면 파일이 그대로 기록되며 물론 크기는 변경되지 않습니다.
이미지는 픽셀로 구성되므로 이미지 크기를 계산하려면 3가지 매개변수를 알아야 합니다.
사진 길이
사진폭
각 픽셀이 차지하는 메모리 크기
따라서 공식
안드로이드에서 각 픽셀이 차지하는 메모리 크기는 4가지 구성이 있는 Bitmap.Config에 의해 결정됩니다
그래서
BitmapFactory.decodeStream()
이 생성하는 비트맵의 크기에 영향을 미치는 것은Bitmap.Config
입니다. 따라서 판독되는 크기는 자연스럽게 다릅니다.다운로드하는 이미지는 jpg 또는 png여야 합니다. 두 형식 모두 일정한 압축률을 가지고 있으며, 압축하지 않으면 메모리에 RGB 형태로 존재하게 됩니다