안드로이드 개발 질문/답변
(글 수 45,052)
어플을 개발하면서 리소스는 빠질 수 없는 부분이죠.
특히나 외형적으로 꾸미려면 이미지파일은 필수요소이죠.
지금껏 개발일을 해오면서 문득 궁금해진게 있습니다.
컴파일시에 이미지에 대한 데이터처리는 어떻게 이루어지는가..?
제가 컴공출신이 아니라 잘 모르는걸수도 있습니다만..(듣도보도못한 게임공학출신;;)
혼자 답을 얻어내려 해도 어려운 부분이네요..
가령 1000픽셀 x 1000픽셀의 이미지가 있고 크기가 1MB 라 치면
1000x1000 만큼의 공간이 생성되어서 각 픽셀마다 들어있는
색상값을 바이트단위로 읽어들여서 (뭐 0x00E2... 이런식이겠죠)
배열로 저장하여 하나의 파일로 나타낸다. 뭐 제가 알고있는 지식은 이럽니다.
그럼 이 논리대로라면 이 이미지파일을 반으로 줄였을 때
즉 500픽셀 x 500픽셀로 변환하였을 때 당연히 크기도 줄어들겠죠
1000x1000의 공간을 반으로 줄였으니까요..
근데 흔히 리샘플링이라는것을 하게 되면 왜 용량이 줄어드는지
잘 이해가 안됩니다. 대표적으로 포토샵에서 사용하는
품질, 디더링, 색상비트값 등을 변경하여 같은 크기로 저장하면 크기가 줄어든다는 것
같은 1000x1000 공간을 갖고 있는 이미지인데 왜 크기가 줄어드는걸까요
각 픽셀에는 똑같이 색상값을 가지고 있을텐데요..
지금껏 아무렇지 않게 사용하다가 갑자기 궁금해져서 올려봅니다.
속 시원하게 답변해주실 분?




핵심적인 답변은 이미지를 압축을 하기 때문에 용량이 확 줄어듭니다.
그런데 압축을 할 때 원래 내용을 100% 복원할 수 있도록 압축을 하느냐 아니면 약간의 손상을 감수하고 압축을 하느냐라는 것의 차이입니다.
예로 드신 포토샾에서 품질 부분을 낮출 수록 용량이 줄어드는 것을 볼 수 있을 것입니다. 이유는 품질이 낮아질 수록 데이터의 손실률이 커지고 그 댓가로 높은 압축률을 얻기 때문입니다. 같은 맥락으로 디더링, 색상비트값등을 조절하여 최대한 원본 이미지를 살릴려고하면 압축률이 떨어지고 그에 따른 용량이 증가하게됩니다. 용량이 줄어들려면 반대의 경우를 생각하면 될 것입니다.
JPEG라는 이미지가 어떻게 만들어지고 저장이되는지에 대해서 좀 더 알아보시면 많은 도움이 되실것입니다.
JPEG 참고 사이트 - 구글에서 'jpeg 포맷' 이라고 검색했습니다.
http://ko.wikipedia.org/wiki/JPEG
http://thecolour.tistory.com/60