-
이미지의 크기를 줄인다. 리사이징 ? 압축 ? 해상도? 품질?iOS 2024. 5. 10. 01:44
앞서 픽셀의 개념과 함께 고해상도는 무엇인지에 대해 이해했습니다.
하지만 항상 고해상도의 이미지가 좋기만 한 것은 아닙니다. 세상에 공짜는 없기 때문에 고해상도의 많은 픽셀을 저장하려면 그만큼 많은 공간이 필요합니다. 당연히 처리하는 시간도 오래 걸릴 것입니다. 아주 작은 영역이라면 그렇게까지 필요하지 않은데도 말이죠.
그래서 개발을 하다보면 이미지의 크기를 줄여야 하는 경우가 생깁니다.
이미지의 크기. 어떻게 줄일 수 있을까요?
방법은 크게 2가지가 떠오릅니다. 픽셀 자체를 버리거나, 저장할 때 최대한 최적화를 시켜야 할 것입니다.
픽셀 자체를 버리는 것을 리사이징 (Resizing)
해상도는 유지하면서 저장 방식을 바꾸거나 데이터를 최적화하는 것을 압축 (Compression) 이라고 합니다.리사이징 Resizing
앞서 설명했듯이 큰 설명이 필요 없을 것 같습니다. 말 그대로 해상도를 줄이는 것으로 픽셀을 줄이는 것입니다.
픽셀이 줄어들었으니 파일의 크기가 감소하지만 품질이 떨어질 수 있습니다.압축 Compression
픽셀의 크기, 해상도는 유지하지만 파일의 크기를 줄이는 것을 의미합니다.
어떻게 줄일 수 있을까요? 압축 방식은 또 두 가지로 나뉩니다.
1. 무손실 압축
이미지의 원본 데이터를 변경하지 않고 파일의 크기만 줄입니다.
즉 압축을 해제했을 때 원본 이미지와 동일한 품질을 유지합니다.
데이터를 효율적으로 재배열하거나, 불필요한 메타데이터를 제거하는 방식으로 파일 크기를 감소시킵니다.
PNG (Portable Network Graphics) 포맷이 여기에 해당합니다.
2. 손실 압축
일부 데이터를 영구적으로 제거하여 파일 크기를 줄입니다.
따라서 이미지를 반복해서 저장하거나 편집할 때마다 품질 저하가 누적될 수 있습니다.
JPEG (Joint Photographic Experts Group) 가 여기에 해당합니다.
압축할 때 해상도는 변하지 않는다며? 근데 손실 압축?
저는 처음에 해상도는 변하지 않는다고 했는데 손실 압축은 뭐지? 라는 생각을 했었습니다.
앞서 설명드린 대로 손실 압축을 해도 해상도. 즉 픽셀 수 자체는 줄어들지 않습니다.
픽셀 수를 줄이는 게 아니라, 픽셀에 저장되는 정보의 양을 줄이는 방식이라고 합니다.
예를 들어, 손실 압축인 JPEG 포맷에서 주변 유사 색상을 단순화해서 데이터를 줄인다고 하네요. 이 과정에서 이미지의 일부 세부사항을 영구 제거해서, 품질 저하가 발생할 수도 있다고 합니다.
결과적으로 시각적인 품질은 떨어질 수 있으나 픽셀이 차지하는 공간 자체는 그대로인 것이죠 !
앱에서 이미지의 크기를 줄이고 싶다. 리사이징? 압축?
상황에 따라 두 가지를 모두 고려해야 할 것 같습니다.
네트워크 통신을 한다면 데이터를 압축하여 파일의 크기가 작아진다면 더욱 빠르게 통신할 수 있겠죠.
데이터를 재사용 하기 위해 저장해 두어야 한다면 역시 데이터를 압축해서 저장한다면 효율적일 것입니다.
압축하면 여러모로 장점은 많이 있겠죠.
하지만 품질이 그렇게 중요하지 않고, 작은 공간에 적절한 해상도로 충분하다면 리사이징해서 적절한 해상도 이미지를 사용하는게 좋을 것 같습니다.
'iOS' 카테고리의 다른 글
Preference (PreferenceKey) (0) 2024.11.24 [iOS] OSSignpost > 특정 작업의 duration 측정하기 (0) 2024.07.01 pixel 과 points, dp의 관계 그리고 UIImage (0) 2024.05.10 SwiftLint SPM으로 설치하기 (using Swift Package Build Tool Plugin) (0) 2024.03.22 swift concurrency 사용해 이미지 권한 얻기 (0) 2023.11.29