세 이미지 모두 정확히 786,432픽셀이다. 그런데 PNG 용량은 약 4천 바이트부터 2백만 바이트 이상까지 벌어진다.
금색 단색 면, 부드러운 그라데이션, 무작위 색상이 모두 1024 × 768 캔버스를 사용한다. 같은 설정으로 저장해도 파일 크기는 크게 달라진다. “이 이미지가 얼마나 큰가?”라는 질문에서 빠지기 쉬운 것은 내용의 구조, 그리고 해당 형식이 무엇을 버려도 되는가다.
캔버스에는 크기가 있고, 그 설명에는 비용이 든다.
가로세로 크기로 알 수 있는 용량
1024 × 768 이미지에는 786,432개의 픽셀이 있다. 픽셀마다 8비트 색상 채널 세 개를 쓰면 원시 RGB 배열은 2,359,296바이트를 차지한다. 각 위치에 빨강, 초록, 파랑이 한 바이트씩 들어가기 때문이다. 이 표현 방식에서는 정확한 계산이다. 다만 파일 헤더, 색상 프로파일, 알파 채널, 앱이 별도로 쓰는 작업 메모리는 포함하지 않는다.
저장된 파일은 같은 샘플을 다른 방식으로 표현한다. 반복되는 패턴을 간결하게 기술하거나 색상 표현을 바꾸거나 정보를 버릴 수 있다. 따라서 픽셀 크기는 중요한 기준이지만 다운로드할 바이트 수까지 정해 주지는 않는다. 파일은 디코딩된 배열보다 훨씬 작을 수 있고, 압축하기 어려운 입력에서는 무손실 파일이 조금 더 커질 수도 있다.
반복이 있으면 PNG가 일하기 쉬워진다
이 실험에서 PNG는 디코딩된 픽셀 값을 그대로 보존한다. 필터 단계는 이웃 샘플 사이의 예측 가능한 변화를 압축하기 쉬운 데이터로 바꿀 수 있고, 이어서 무손실 압축이 적용된다. 단색 면에는 반복이 풍부하다. 그라데이션에도 구조가 있지만 행 사이의 미세한 변화와 반올림 때문에 실제 설명은 “여기서 저기까지 색을 바꾸라”는 문장만큼 단순하지 않다.
측정된 PNG 용량은 단색 4,025바이트, 그라데이션 102,469바이트, 무작위 RGB 2,363,424바이트였다. 모두 디코딩 후 원본 배열과 정확히 일치했다. 무작위 이미지에는 활용할 예측 가능성이 적어서 인코딩 부가 정보까지 포함하면 원시 RGB 배열보다 조금 커졌다.

JPEG는 다른 조건으로 거래한다
품질 85와 4:2:0 크로마 서브샘플링을 사용한 JPEG 용량은 각각 12,917, 23,726, 594,655바이트였다. 이 실험에서는 단색 JPEG가 PNG보다 컸고, 나머지 두 이미지는 더 작았다.
JPEG는 보통 밝기 성분과 색 차이 성분을 나눠 처리하고, 서브샘플링을 켜면 색 해상도를 낮추며, 블록 변환 계수를 양자화한다. 디코딩한 픽셀이 원본과 같을 필요는 없다. 무작위 색상을 확대해 보면 밝고 독립적인 색점들이 다른 형태의 흐릿한 색감으로 바뀐다. 바이트를 줄인 대신 이미지도 바뀐 것이다. 모든 샘플을 그대로 보존하는 비용이 공짜로 줄어든 것은 아니다.

품질 85는 85퍼센트 보존이라는 뜻이 아니다
인코더의 품질 설정은 절충을 조절하는 값이다. 원래 정보가 남은 비율이나 사람이 무엇을 알아차릴지에 대한 약속이 아니다. 무작위 RGB 원본에서 테스트 설정을 25에서 95로 올리자 파일이 190,431바이트에서 922,548바이트로 커졌다. RGB 평균제곱오차는 약 4,962에서 3,487로 내려갔다.
이 오차는 원본과 복원된 채널 값의 차이를 제곱해 평균한 것이다. 샘플이 바뀌었는지 확인하는 데 유용하지만 지각 품질에 대한 판정은 아니다. 이번에는 품질 95에서도 4:2:0 서브샘플링을 유지했으므로 품질 값을 높여도 원본의 전체 색 해상도가 복원되지는 않았다. 다른 인코더와 설정에서는 결과가 달라질 수 있다.

숫자를 보존하는 것과 잘 보이는 것은 다르다
무손실 저장 후 복원 검사는 샘플 값을 확인할 뿐 전체 시청 경험을 검증하지 않는다. 색상 프로파일은 그 값을 어떻게 해석해야 하는지 디스플레이 시스템에 알려 준다. 메타데이터, 회전 방향, 투명도, 비트 깊이, 뷰어의 색 처리도 중요할 수 있다. 이번 합성 샘플에는 EXIF나 ICC 프로파일을 추가하지 않았으므로 색 관리가 적용된 사진 작업 흐름을 평가하지 않는다.
무작위 RGB는 일반적인 사진을 대표하지도 않는다. 이웃 픽셀이 서로를 거의 예측하지 못하도록 일부러 만들었기에 극한 사례로 유용하다. 인물 사진, 화면 캡처, 스캔한 선 그림, 노이즈 많은 야경은 구조가 서로 다르다. 용량과 품질의 균형은 이 그래프 하나를 빌려 판단하기보다 실제 내용과 사용처를 보고 결정해야 한다.
무엇을 남겨야 하는지 먼저 묻기
선명한 도식이나 화면 캡처에서는 마지막 몇 바이트를 줄이는 것보다 테두리, 글자, 투명도를 지키는 일이 중요할 수 있다. 사진은 꼼꼼히 확인한 손실 압축이 합리적인 선택일 수 있다.
사람들이 실제로 볼 크기에서 내보낸 결과를 비교하고, 중요한 세부를 확인한 뒤 파일 용량을 측정하자. 편집을 반복할 예정이라면 원본도 남겨 두는 편이 좋다. 이미지 축소는 샘플 수를 줄이고 압축은 그 설명 방식을 바꾼다. 어떤 것을 조절하는지 알면 “좀 더 작게 만들어 줘”라는 요청도 훨씬 명확해진다.
