JPEG - 사진을 위해 설계된 손실 압축 포맷
JPEG = Joint Photographic Experts Group
본질적으로 사진 처리를 위한 포맷
JPEG는 본질적으로 사진과 같은 현실 이미지를
효율적으로 저장하기 위해 만들어진 포맷입니다.
확장자는 .jpg와 .jpeg를 모두 쓰지만, .jpg가 더 일반적으로 쓰입니다.
그런데 "손실"이라니 뭔가 어감이 아주 부정적인데요,
JPEG는 과연 이미지를 어떻게 손실 시키는 것일까요?
그리고 과연 부정적인 점만 있을까요?
1. JPEG의 핵심 - 손실 압축
- 손실 압축: 데이터를 일부 버리고 압축 효율을 높이는 방식
→ 인간의 눈이 잘 구분하지 못하는 정보를 제거하거나 단순화 - 대부분 시각적으로 품질 저하가 거의 보이지 않음
무손실 압축은 원본 정보를 100% 보존하지만, 손실 압축은 일부 데이터를 버립니다.
JPEG는 사람이 잘 구분하지 못하는 디테일을 제거해 파일 크기를 줄입니다.
2. 8×8 블록 기반 구조
JPEG는 이미지를 8×8 픽셀 블록 단위로 나누어 인코딩합니다.
- 예를 들어 32×32 이미지라면 블록을 4개로 나눕니다.
- 만약 이미지가 8x8보다 작은 경우에도 8x8블록 단위로 만들고,
- 빈 곳은 0으로 채우거나, 가장자리 값을 복제해서 채웁니다.
이렇게 만들어진 8x8(64픽셀)의 블록은 아래와 같이 요약됩니다 :
- 이 블록의 평균 밝기(DC)는 이 정도고,
- 가로로 천천히 어두워지는 변화(저주파)가 이만큼,
- 세로로 살짝 줄무늬 같은 변화(조금 더 고주파)가 이만큼,
- 등등...
즉, "픽셀값 목록"대신, 변화와 강도 목록(계수)로 바꿔 저장합니다.
이 변환을 DCT(이산 코사인 변환)이라고 합니다.
이렇게 블록의 정보를 저장하면 블록 간의 세부 정보 손실이 잘 티가 나지 않습니다.
이유는 아래와 같습니다 :
- 사진의 대부분은 하늘, 피부처럼 부드러운 변화(저주파)가 많다.
- 반대로 모공, 잔머리같은 미세한 흔들림(고주파)는 있어도 덜 중요하게 느껴진다.
- 그래서 "부드러운 변화"는 크게 남겨두고, "자잘한 변화"는 작게(혹은 버려도) 눈에 잘 띄지 않는다.
- => 결과, 파일은 작아지고, 육안 품질은 꽤 유지됨.
3. 고주파 정보 줄이기
위에서 JPEG는 고주파(high frequency) 정보를 줄인다고 설명했습니다.
| 저주파 | 색·밝기 변화가 부드럽게 | 하늘, 피부, 그라디언트 |
| 고주파 | 색·밝기 변화가 급격 | 글자 테두리, 나뭇잎, 머리카락 |
4. Luma / Chroma 분리 & 서브샘플링(Subsampling)
JPEG는 이미지를 두 가지 정보로 분리합니다.
1. Luma(밝기 정보)
- 사람의 눈은 밝기에 민감합니다.
- 때문에 이 정보는 손실 거의 없이 저장합니다.
2. Chroma(색상 정보)
- 사람의 눈은 색상 정보에는 덜 민감합니다.
- 때문에 해상도를 줄여서 저장합니다. (서브샘플링)
- 예를 들어 :
- Luma: [L1][L2][L3][L4] → 전부 저장
- Chroma 원본: [C1][C2][C3][C4]
- 서브샘플링: [C1][C3]만 저장 → 복원 시 중간 색은 “대충 이어 붙임”
5. 인간 시각 시스템과 양자화
- 뇌는 불필요한 디테일은 무시하고, 핵심 정보만 저장하는 압축기와 같습니다.
- 정원에 있을 때 꽃 색깔은 기억해도, 잎사귀 각도나 미묘한 녹색 차이는 기억하지 못하는 것과 같죠.
- JPEG도 이와 같은 원리로 보존할 정보와 버릴 정보를 구분하여 양자화 합니다.
6. 강한 압축의 결과 : 압축 아티팩트
JPEG의 압축률을 강하게 높이면 많은 색상정보와 고주파정보를 생략하게 됩니다.
그러면서 8x8 단위로 나눠진 블록들이 서로 자연스럽게 연결되지 않는
압축 아티팩트 현상이 발생하게 됩니다.

위 이미지를 자세히 보면 모자이크처럼 네모블럭들이 경계를 이룬 것을 볼 수 있습니다.
이것이 압축 아티팩트 현상입니다.
7. Progressive JPEG
렌더링 방식을 개선한 JPEG 변형입니다.
Progressive JPEG의 확장자도 .jpeg, .jpg로 동일합니다.
하지만 클라이언트에서 렌더링 되는 방식에 차이가 있습니다.

기본 JPEG :
- 이미지 상단부터 하단까지 차례대로 표시 됨
- 전송이 진행될수록 이미지가 위에서 아래로 점점 채워지는 방식
Progressive JPEG :
- 전체 이미지를 여러번에 걸쳐 전체 크기로 반복 렌더링함
- 처음엔 흐릿한 전체 이미지가 즉시 보이고,
- 이후 전송이 진행되면서 점점 더 선명해지는 방식
Progressive JPEG 장점 :
- 전체 이미지가 먼저 보여 더 빠른 느낌을 줌
- PJPEG로 저장하면 용량이 더 작아지는 경우가 있음
Progressive JPEG 단점:
- 렌더링 시 클라이언트에 약간 더 많은 연산 부담을 주지만, 큰 체감은 없음.
어떻게 Progressive JPEG로 저장하나?
구글에서 만든 이미지 최적화 도구 https://squoosh.app/ 를 사용하면,
Progressive JPEG로 저장할 수 있는 옵션이 있습니다.
언제 JPEG를 쓸까?
JPEG는 용량도 가볍고, 이미지 품질도 나쁘지 않아서 많이 쓰이는 포맷입니다.
그러나 투명도(알파 채널)를 지원하지 않고,
경계가 선명하지 않으며 아티팩트가 쉽게 발생한다는 특징 때문에 아이콘/텍스트에도 부적합합니다.
때문에 JPEG는 사진, 스냅샷, 현실 이미지 표현에 최적인 포맷입니다.
이젠 WebP, AVIF등 차세대 이미지 포맷들이 더 좋은 품질과 더 낮은 용량으로
치고 올라오고 있지만, JPEG는 역사가 긴 만큼
모든 브라우저, OS등에서 호환되기 때문에 안전하게 사용되고 있습니다.
결론
JEPG : "아직은 날 밀어내려면 멀었어~!"
참고
이미지 형식: JPEG | web.dev
웹에서 가장 일반적인 이미지 형식에 대해 알아보세요.
web.dev
'잡스럽고 잼있는 지식' 카테고리의 다른 글
| WebP - JPEG, PNG, GIF를 한 번에 대체하려는 구글의 이미지 포맷 (5) | 2025.08.13 |
|---|---|
| PNG, 웹에서 점점 사라지는 이유 (1) | 2025.08.11 |
| GIF, 아직도 쓰나요? - 무손실 압축이지만 손실이 있는 이유 (6) | 2025.08.11 |
| SVG는 무조건 가볍다? 과연 그럴까? (2) | 2025.07.29 |