[Android] 안드로이드 UI 어디까지 아는데 ? - (2) 이미지 형식 : bitmap, vector, SVG, PNG
의 시리즈 글로, dp와 dpi에 대한 개념을 모른다면 위 글을 읽고 오면 더 이해가 쉽다.
이미지를 이루는 단위에 대해 알아보았다면, 이제는 안드로이드에서 쓰이는 다양한 이미지 형식에 대해서 알아보자.
bitmap
비트맵 이미지는 픽셀로 구성된 이미지로, 각 픽셀이 색상을 가지며 전체 이미지를 구성한다. 이때 비트맵 이미지에 PNG, JPEG, BMP, GIF 등이 포함되는 것이다. 비트맵 이미지는 다음과 같은 특징을 가진다.
- 해상도 의존성: 비트맵 이미지는 해상도에 따라 품질이 달라진다. 이미지를 확대하면 픽셀이 보이거나 이미지가 흐릿해질 수 있다.
- 파일 크기: 고해상도 비트맵 이미지는 파일 크기가 클 수 있으며, 이로 인해 앱의 성능에 영향을 줄 수 있다.
- 사용처: 세밀한 디테일이 필요한 사진이나 복잡한 그래픽에 적합하다.
vector
벡터 이미지는 수학적 도형과 경로를 사용하여 이미지를 표현하는 방식이다. 벡터 이미지의 요소는 선, 곡선, 다각형 등으로 구성된다. 이 벡터 이미지에 SVG가 포함된다. 벡터 이미지는 다음과 같은 특징을 가진다.
- 해상도 독립성: 벡터 이미지는 크기 조정이 자유롭고 해상도에 영향을 받지 않는다. 이미지를 확대하거나 축소해도 품질이 유지된다.
- 파일 크기: 벡터 이미지는 보통 파일 크기가 작아 효율적이다.
- 사용처: 복잡한 이미지는 표현할 수 없어서 간단한 도형이나 로고 등에 주로 사용한다.
두개의 가장 중요한 차이는 해상도에 독립적인지에 대한 여부라는 걸 꼭 기억하자. 그렇다면 각각의 대표인 PNG, JPEG와 SVG의 차이에 대해서도 알아보자.
SVG (Scalable Vector Graphics)
2차원 그래픽을 벡터 방식으로 표현하는 XML 기반으로, 웹에서 사용되는 표준 벡터 형식이다. 모든 사이즈에서 깔끔하게 렌더링되며, 웹 표준과 잘 동작하도록 설계되었다.
- 해상도 독립성: SVG는 벡터 형식이므로 크기 조정 시 품질이 유지된다.
- 편집 가능: XML 형식으로 저장되므로, 텍스트 편집기나 벡터 그래픽 소프트웨어를 사용하여 수정할 수 있다.
PNG (Portable Network Graphics)
PNG는 비트맵 이미지 형식으로, 압축된 파일 형식이다. PNG는 무손실 압축을 사용하여 이미지 품질을 유지한다.
- 무손실 압축: PNG는 이미지의 품질을 유지하면서 압축할 수 있다. 색상 정보가 손실되지 않으므로 고품질 이미지를 제공한다.
- 투명도 지원: PNG는 알파 채널을 지원하여 이미지의 투명도를 처리할 수 있다. 이로 인해 투명 배경이 필요한 디자인 요소에 적합하다.
무손실 압축
무손실 압축은 이미지의 모든 원본 데이터를 유지하며, 중복된 정보나 비효율적인 패턴을 효율적으로 인코딩하여 파일 크기를 줄인다.압축된 상태에서도 디지털 원본과 100% 똑같은 형태를 유지하는 압축 방식이다.
DEFLATE라는 무손실 압축 알고리즘으로 압축하는데, 반복 표현되는 정보를 최대한 줄이는 방식으로 비슷한 값이 자주 나타날수록 더 적은 비용으로 압축할 수 있다. 현재 압축하려는 데이터가 이전에 존재했는지 파악해 반복 여부를 표시한다. 그다음, 허프만 코딩으로 이미지를 0과 1로 부호화해 해당 데이터 문자의 출현 빈도로 접두어 코드를 부여한다고 한다.
JPEG (Joint Photographics Coding Experts Groups)
JPEG 또한 비트맵 이미지 형식으로, 정지화상을 위해서 만들어졌다. 고화질이며 압축률이 높아서 용량이 작고, 이미지 확장자 중 가장 많이 쓰이지만 문자, 선, 세밀한 격자 등 고주파 성분이 많은 이미지 변환에서는 GIF/PNG에 비해 불리하다.
- 손실 압축: JPEG는 손실 압축 방식을 사용하여 이미지 파일의 크기를 줄인다. 이 과정에서 일부 이미지 데이터가 손실되며, 이는 압축률에 따라 다르게 나타날 수 있다. 손실된 데이터는 복구할 수 없다.
- 파일 크기: 손실 압축 덕분에 JPEG 파일은 상대적으로 작은 파일 크기를 가진다. 이는 저장 공간과 전송 대역폭을 절약하는 데 유리하다.
손실 압축
손실 압축은 이미지에서 사람이 인식하지 못하는 정보, 특히 고주파 데이터를 제거하여 파일 크기를 줄인다.
이 주파수 영역대를 낮은 쪽으로 더 크게 잡을수록 이미지 용량이 더 줄어들지만, 그만큼 사람이 인지하는 영역의 정보까지 제거될 수 있어 화질이 나빠진다.
참고자료
JPG와 PNG 차이점
JPG와 PNG의 가장 큰 차이점은 각각 사용하는 압축 알고리즘이 다르다는 점입니다. JPG는 손실 압축 알고리즘(lossy compression algorithm)을 사용합니다. 파일 크기를 줄이기 위해 이미지 정보 중 일부를
woonys.tistory.com