WebP 변환에서 품질·투명도·실제 용량을 검증하는 법
품질 80을 용량 20% 감소로 오해하지 않고, 치수·포맷·투명도와 실제 Blob 바이트를 함께 검증합니다.
마지막 검토: 2026년 8월 25일 · 로직 버전 20260724-1 · 치수 로직 버전 20260722-1
PROBLEM
왜 이 구분이 필요한가
이미지 품질 숫자는 파일 크기 감소율이 아닙니다. 같은 quality 80이라도 사진의 노이즈, 색 변화, 브라우저 인코더에 따라 결과 바이트가 달라집니다. 또 PNG의 투명 배경을 JPEG로 바꾸면 투명도를 표현할 수 없어 흰색 배경으로 합성됩니다. 목표는 품질 숫자를 맞추는 것이 아니라 실제 표시 크기, 육안 품질, 결과 바이트를 함께 확인하는 것입니다.
PROCEDURE
실무 적용 순서
원본의 MIME, 픽셀 치수, 바이트를 먼저 기록합니다. 긴 변 기준 목표 치수를 정하고 비율 유지를 켭니다. WebP나 JPEG를 선택해 한 번 변환한 뒤 결과 픽셀과 실제 Blob 바이트를 기록합니다. 대표 이미지처럼 중요한 자산은 quality 70, 80, 90을 각각 만들어 글자 가장자리와 그라데이션을 비교합니다. 투명 자산은 PNG와 WebP 결과를 체크보드 배경에서 확인하고, 업로드 대상 서비스에서도 다시 엽니다.
BASIS
계산과 검증 근거
브라우저는 File을 createImageBitmap으로 해석하고 Canvas에 목표 치수로 그린 뒤 toBlob으로 선택 포맷을 인코딩합니다. 비율 유지 시 원본 가로·세로 비율로 반대 치수를 계산합니다. 따라서 4000×3000에서 가로 1200을 지정하면 세로는 900입니다. 표시되는 결과 용량은 추정치가 아니라 브라우저가 만든 Blob의 실제 byte 수입니다.
LIMITS
지원 범위와 한계
입력은 JPEG, PNG, WebP이며 파일은 최대 20 MiB, 결과의 최대 변은 8,192px입니다. GIF 애니메이션과 HEIC는 지원하지 않습니다. PNG에서 quality 값은 브라우저에 따라 용량에 거의 영향을 주지 않을 수 있습니다. 잘못된 치수는 일부 경우 원본 치수로 돌아가며 특정 결과 바이트를 사전에 보장하지 않습니다.
WORKED EXAMPLES
직접 재현할 예제
블로그 대표 이미지
- 입력
- 4000×3000 JPEG, 가로 1200, WebP quality 80
- 결과
- 1200×900 WebP
용량은 변환 후 Blob 바이트로 확인하며 감소율은 미리 보장하지 않습니다.
투명 PNG 유지
- 입력
- 투명 PNG → PNG 또는 WebP
- 결과
- 지원되는 알파 채널 유지
체크보드 배경에서 가장자리를 확인합니다.
투명 PNG를 JPEG로
- 입력
- 투명 PNG → JPEG
- 결과
- 투명 영역이 흰색
JPEG는 알파 채널을 저장하지 않습니다.
경계 확인
- 입력
- 20 MiB 초과 또는 목표 변 8192px 초과
- 결과
- 입력 거부 또는 허용 범위 안내
브라우저 메모리와 Canvas 한계도 별도로 작용할 수 있습니다.
FAQ
자주 묻는 질문
품질 80이면 용량이 20% 줄어드나요?
아닙니다. 품질 값과 감소율은 대응하지 않으며 이미지 복잡도와 인코더에 따라 달라집니다.
JPEG에서 투명도가 사라지는 이유는 무엇인가요?
JPEG 포맷에는 알파 채널이 없어 도구가 투명 영역을 흰색으로 채웁니다.
HEIC나 GIF도 변환할 수 있나요?
현재 입력은 JPEG, PNG, WebP만 지원하며 GIF 애니메이션과 HEIC는 지원하지 않습니다.
결과 파일 크기를 정확히 맞출 수 있나요?
아닙니다. 실제 Blob 크기를 보여 주지만 목표 바이트를 보장하는 반복 압축 기능은 없습니다.
SOURCES