PNG 파일, 압축하면 용량이 오히려 늘어난다고?
이게 무슨 이상한 소리일까 싶다.
보통은 사진이나 이미지 파일을 용량을 줄이기 위해
압축 프로그램을 이용하여 용량을 줄인다.
당연히 일반적으로 파일을 압축하면 용량이 줄어든다.
그럼 PNG 파일을 압축을 하면 용량이 증가한다는 말은 거짓말일까?

정말 그러는지 확인해볼까?

실제로 압축을 하면 용량이 증가하는지에 대한
확인을 위해 PNG 이미지 하나를 압축해보았다.

  • 왼쪽부터 차례대로
  • 원본 PNG 파일 : 4.33KB
  • 윈도우 기본 ZIP 압축 : 4.42KB
  • 반디집 압축률 최대 ZIP 압축 : 4.45KB
  • 반디집 7z 압축 : 4.43KB
PNG 파일을 여러 형태로 압축하여 실제 용량을 확인하는 예시 이미지

진짜다.
정말 압축을 하니 오히려 원본 PNG 파일보다 용량이 증가했다.
PNG 파일을 압축하면 용량이 증가한다?
이 말 뜻을 이해하려면 먼저 PNG 파일의 특성과 압축 방식에 대해 이해해야 한다.

PNG 파일의 특성

PNG(Portable Network Graphics
기본적으로 무손실 압축 알고리즘 방식을 사용하는 이미지 파일 형식이다.
무손실 압축은 말 그대로 이미지 정보의 손실 없이 파일 크기만 줄이는 방식이다.
압축을 풀면 원본 이미지와 똑같은 결과물을 얻을 수 있다.

이는 PNG 파일이 이미 데이터를 효율적으로 압축하여 저장한다는 것을 의미한다.
이미 압축된 이미지 파일인 PNG 확장자는 압축된 상태로 저장되기 때문에
추가적인 압축을 시도해도 더 이상 큰 압축 효과를 기대하기 어렵다는 의미이기도 하다.

압축 프로그램의 작동 방식

대부분의 파일 압축 프로그램(예: ZIP, RAR, 7-Zip 등)은
데이터를 더 작은 크기로 만드는 과정을 통해 파일의 용량을 줄인다.
이 과정에서 사용하는 주요 기술은 중복 제거패턴 인식이다.

중복 제거 기술은 파일 내에 동일한 데이터가 반복될 경우,
압축 프로그램은 이 반복되는 데이터를 하나로 줄여 저장하는 기술을 말한다.
예를 들어, 텍스트 파일에서 “aaaaaa”라는 문자열이 있다고 가정해보자.
압축 프로그램은 이를 “a”와 “6번 반복됨”으로 표현하여 저장한다.
이렇게 하면 데이터를 저장하는 데 필요한 공간이 줄어들게 된다.

패턴 인식 기술은 데이터에서 반복되는 패턴이나 구조를 찾아내고,
이를 간단한 방식으로 표현해 저장하는 기술을 말한다.
예를 들어, 특정한 문장이나 비트 패턴이 자주 나타난다면,
압축 프로그램은 이 패턴에 대해 짧은 코드(토큰)를 만들어 그 코드로 대체한다.
반복되는 패턴을 다른 짧은 코드로 대처함으로써 이 또한 데이터를 저장하는 데 필요한 공간을 줄이는 것이다.

PNG 파일의 압축 작동 방식

위에서도 언급하였지만, PNG 파일은 무손실 압축 방식으로 이미 압축된 파일이라고 했다.
그렇다면 PNG 파일은 이미 압축이 되었다는 것인데,
그럼 PNG 파일은 어떤 압축 방식을 사용하는 걸까?

PNG 파일은 데이터를 저장할 때 DEFLATE라는 압축 알고리즘을 사용한다.
이 알고리즘은 이미지를 구성하는 픽셀 데이터를 중복 제거와 패턴 인식 방식을 통해 압축한다.

왜 PNG 파일을 압축하면 용량이 늘어날까?

이 글의 핵심 부분이다.
PNG 파일을 ZIP이나 RAR 같은 일반적인 압축 프로그램으로 추가로 압축할 때,
왜 용량이 줄어들지 않거나 오히려 증가할까?
눈썰미가 좋은 사람이면 이미 눈치를 챘을 것이다.

맞다.
용량이 줄어들지 않는 이유는 같은 압축 알고리즘 방식을 사용하기 때문이다.
PNG 파일의 압축 방식과 ZIP과 같은 압축 방식은 같은 압축 알고리즘인 DEFLATE를 사용한다.
이 알고리즘은 압축 효율성과 속도, 두 마리의 토끼를 모두 잡기 때문에
다른 압축 알고리즘에 비해 ‘가성비’가 좋다.
아직까지도 현재 압축 알고리즘의 표준으로 인정받고 있는 추세이기도 하다.

파일 압축프로그램(예: ZIP, RAR)은 데이터를 반복적인 패턴이나 중복된 정보를 찾아 압축한다.
하지만 ZIP 같은 일반적인 압축 방식은 PNG의 특수한 압축 구조를 고려하지 않는다.
이미 DEFLATE 알고리즘을 사용해 최적화된 PNG 파일에서는
추가로 제거할 수 있는 중복된 데이터와 패턴이 거의 없다.
즉, ZIP이나 RAR과 같은 프로그램은 PNG 파일의 데이터에서
더 이상 큰 패턴을 찾기 어렵기 때문에 실질적으로 더 이상 용량을 줄일 수 없는 것이다.
그러니 추가 압축이 의미가 없을 수 밖에.

추가 압축이 효율이 좋지 않고 더 이상 압축이 되지 않는다는 것은 알았다.
그럼 왜 용량은 오히려 늘어나는 것일까?

ZIP, RAR 등의 압축 프로그램은 압축된 파일에 추가 정보를 저장한다.
여기에는 파일 이름, 압축 알고리즘의 정보, 압축된 파일들의 구조 정보 등이 포함된다.
특히나 이미 최적화된 PNG 파일의 데이터에 압축 알고리즘이 추가되면서 파일 구조가 복잡해질 수 있다.
이 추가 정보는 오히려 파일의 크기를 조금씩 증가시킬 수 있다.
그래서 여러 개의 작은 PNG 파일을 압축할 때,
이 메타데이터로 인해 전체 파일 크기가 줄어들기보다는 약간 늘어나는 이유는 이 때문이다.

결론

정리하면, 이미 효율적으로 압축된 PNG 파일에 다시 압축을 가하게 되면
추가적인 패턴을 찾기 어렵고, 그 결과 추가적인 압축이 거의 일어나지 않거나
압축 알고리즘의 메타데이터가 추가되어 오히려 파일 크기가 커지는 경우가 생기게 되는 것이다.

댓글 남기기