이미지 압축
무료 온라인 이미지 압축: 사진 용량을 한 번에 줄이고 JPG·WebP·PNG로 변환, 긴 변 기준으로 크기 조절, ZIP으로 저장. 회원가입 없이, 이미지는 업로드되지 않아요.
- 일괄 압축
- 포맷 변환
- 크기 줄이기
- 업로드 없음
PNG는 무손실 형식이라 품질 설정이 적용되지 않아요.
🔒 모든 계산은 브라우저 안에서 이뤄지며 데이터는 어떤 서버에도 업로드되지 않아요.
이럴 때 쓰면 좋아요
- 웹사이트·블로그: 카메라나 휴대폰 사진을 1920px로 줄이고 WebP로 바꾸면 페이지가 더 빨리 열려요.
- 업로드 용량 제한이 있을 때: 지원서, 공공기관 사이트, 쇼핑몰 관리자 페이지에 파일 용량 제한이 있으면 먼저 압축한 뒤 올려요.
- 이메일·카카오톡 전송: 여러 장을 한 번에 압축하고 ‘전체 ZIP 다운로드’로 묶어 더 빨리 보내요.
- 휴대폰·클라우드 용량 절약: 오래된 사진을 일괄로 줄여 화질은 지키면서 공간을 아껴요.
사용 방법
- ‘이미지 선택’을 누르거나 점선 상자에 이미지를 끌어다 놓으세요. 여러 장을 한 번에 추가할 수 있고, 처리가 끝나면 미리보기와 압축 전후 용량이 표시돼요.
- 출력 형식(JPG, WebP, PNG)을 고르고 슬라이더로 품질을 조절하세요. 크기를 줄이려면 ‘긴 변 최대값’에 픽셀 수(예: 1920)를 입력해요. 설정을 바꾸면 모든 이미지가 자동으로 다시 처리돼요.
- 이미지마다 ‘다운로드’로 따로 저장하거나 ‘전체 ZIP 다운로드’로 한 번에 받으세요. ‘지우기’를 누르면 처음부터 다시 시작해요.
사용 예시
휴대폰으로 찍은 4032×3024, 3,500,000바이트 사진을 JPG, 품질 80, 긴 변 최대값 1920으로 출력해요. 크기는 비율을 유지한 채 1920×1440으로 줄어들어요. 브라우저 인코딩 결과가 420,000바이트라면 카드에 "3.34 MB → 410.2 KB"와 "88% 감소"가 표시되며, 새 파일은 원본의 12%예요.
120,000바이트(117.2 KB) PNG 스크린샷을 그대로 PNG로 출력해 156,000바이트가 되면 "117.2 KB → 152.3 KB" "원본보다 30% 증가", WebP로 출력해 48,000바이트가 되면 "117.2 KB → 46.9 KB" "60% 감소"로 표시돼요. 실제 용량은 이미지 내용과 브라우저에 따라 달라지며, 여기의 바이트 수는 가정한 값이고 표시 용량과 비율은 도구의 계산 결과예요.
세 장 일괄 처리: 3.34 MB → 410.2 KB, 117.2 KB → 152.3 KB, 830.1 KB → 207.0 KB. 위쪽 합계는 "3장: 4.26 MB → 769.5 KB(82% 감소)"로 표시돼요. 합계는 전체 바이트를 더한 뒤 비교한 값이며, 세 장의 비율을 평균한 것이 아니에요.
결과 해석
- 초록색 "N% 감소"는 새 파일이 원본보다 N% 작다는 뜻이에요. 빨간색 "원본보다 N% 증가"는 다시 인코딩하면서 오히려 커졌다는 뜻으로, 이미 작은 JPG를 높은 품질로 다시 저장하거나 PNG를 PNG로 저장할 때 자주 생겨요. 이럴 때는 원본을 사용하세요.
- 변화가 0.5% 미만이면 "<1%"로 표시돼요. 크기 줄에 화살표가 있으면 해상도가 줄어든 것이고, 숫자가 하나뿐이면 원래 크기를 유지한 거예요.
- ‘브라우저가 이 형식을 지원하지 않아 PNG로 출력했어요’가 보이면 사용 중인 브라우저(주로 구버전 Safari)가 WebP를 출력할 수 없어 자동으로 PNG로 저장했고 확장자도 바뀐 거예요.
- 1 KB는 1024바이트로 계산하며 Windows 파일 탐색기와 같아요. Mac의 Finder는 1000바이트로 계산하므로 숫자가 조금 달라요.
원리와 계산 방법
- 읽기: 브라우저 내장 createImageBitmap으로 디코딩하며 사진의 EXIF 방향에 맞게 회전해요. 디코딩에 실패하면 <img>로 불러와요(예: SVG).
- 축소: 긴 변이 최대값을 넘으면 가로와 세로에 "최대값 ÷ 긴 변"을 곱한 뒤 반올림하고, 짧은 변은 최소 1 px이에요. 확대는 하지 않으며 canvas의 고품질 보간으로 축소해요.
- 인코딩: 이미지를 canvas에 그린 뒤 canvas.toBlob(형식, 품질)을 호출하며, 품질 10~100은 0.1~1.0에 해당해요. JPG는 투명 채널이 없어 투명한 부분을 먼저 흰색으로 채우고, PNG는 무손실이라 품질 설정이 적용되지 않아요.
- 비교: 변화율 = |1 − 새 파일 크기 ÷ 원본 크기| × 100을 정수로 반올림해요. 합계는 성공한 모든 이미지의 바이트 합으로 계산해요.
- ZIP: 브라우저에서 fflate로 묶어요. 이미지는 이미 압축되어 있으므로 다시 압축하지 않고 저장하며, 같은 이름의 파일에는 -2, -3을 붙여 덮어쓰지 않아요.
한계와 주의점
- 다시 인코딩하면 EXIF(촬영 시각, GPS 위치, 카메라 모델)와 색상 프로필이 제거돼요. 이 정보를 보존해야 한다면 적합하지 않아요. 광색역(Display P3) 사진은 색이 약간 달라질 수 있어요.
- 움직이는 GIF와 WebP는 첫 프레임만 남아요. HEIC는 지원하는 브라우저(예: Safari)에서만 읽을 수 있고, 다른 브라우저에서는 읽을 수 없다고 표시돼요.
- 압축 결과는 브라우저 내장 인코더가 결정하므로 같은 설정이라도 Chrome, Firefox, Safari에서 용량과 화질이 달라요. "200 KB 이하로" 같은 목표 용량은 지정할 수 없으니 품질을 직접 조절하세요.
- 아주 큰 이미지는 브라우저의 canvas 크기와 메모리 제한(특히 iPhone의 Safari)에 걸려 출력되지 않을 수 있어요. 긴 변 최대값을 입력한 뒤 다시 시도하세요.
자주 묻는 질문
품질은 얼마로 설정하면 좋나요?
일반 사진은 JPG나 WebP 품질 70~80이면 눈으로는 거의 차이가 없으면서 용량이 크게 줄어들어요. 인쇄나 후보정용이라면 90 이상을 권장해요. 글자가 많은 스크린샷이나 차트는 PNG나 WebP가 더 선명하며, JPG는 글자 가장자리에 노이즈가 생기기 쉬워요.
압축했는데 왜 용량이 더 커졌나요?
원본이 이미 많이 압축된 경우(예: 저품질 JPG) 더 높은 품질로 다시 인코딩하면 오히려 커져요. PNG를 PNG로 저장해도 브라우저 내장 PNG 인코더가 따로 최적화되어 있지 않아 커지는 경우가 많아요. 품질을 낮추거나 WebP로 바꾸거나 원본을 그대로 사용하세요.
투명 배경 PNG를 JPG로 바꾸면 어떻게 되나요?
JPG는 투명을 지원하지 않아 투명한 부분이 흰색이 돼요. 투명 배경을 유지하려면 WebP나 PNG를 선택하세요.
이미지가 업로드되나요?
아니요. 읽기, 압축, ZIP 묶기 모두 브라우저 안에서 처리되며 이미지는 서버로 전송되거나 저장되지 않아요. 페이지를 닫으면 사라져요.
사진을 1MB나 200KB 이하로 줄이려면 어떻게 하나요?
먼저 ‘긴 변 최대값’에 1600~1920을 넣고 품질을 70~80으로 맞추세요. 그래도 크면 품질이나 크기를 더 낮추면 돼요. 이미지마다 압축 후 용량이 표시되어 조절하면서 바로 확인할 수 있어요.
JPG와 WebP 중 무엇을 골라야 하나요?
WebP는 비슷한 화질에서 보통 JPG보다 약 25~35% 작고 주요 브라우저가 모두 지원해요. 오래된 시스템, 인쇄, JPG만 받는 업로드 양식에 쓸 때는 JPG가 무난해요.
압축하면 사진의 촬영 정보(EXIF)가 남나요?
남지 않아요. 다시 출력할 때 이미지만 남기고 촬영 시간, GPS 위치 같은 정보는 모두 지워지므로 사진을 공유할 때 위치가 노출될 걱정도 줄어들어요.
참고 자료
- HTMLCanvasElement: toBlob() method — MDN Web Docs
- Image file type and format guide — MDN Web Docs
- HTML Standard — 4.12.5 The canvas element — WHATWG