이미지 압축과 업스케일, 브라우저 안에서 끝냅니다

파일을 올려 둘 곳이 없습니다. 이미지를 놓으면 이 브라우저 안에서 바로 처리됩니다.

이미지를 여기에 놓으세요

화면 어디에나 끌어다 놓을 수 있습니다

지원 포맷 · PNG · JPEG · WEBP · AVIF · GIF

파일이 브라우저를 벗어나지 않습니다

두 가지 도구

이미지 압축

여러 장을 한 번에 압축하고 원본과 비교한 뒤, 한 장이면 그대로 여러 장이면 zip 으로 내려받습니다. 애니메이션 GIF 도 프레임을 유지한 채 처리합니다.

압축하러 가기

이미지 업스케일

Real-ESRGAN ONNX 모델을 브라우저에서 실행해 2배 또는 4배로 키웁니다. 큰 이미지는 타일 단위로 나눠 처리합니다.

업스케일하러 가기

서버가 하는 일이 없습니다

아래는 전부 한 가지에서 따라옵니다 — 이미지를 보낼 곳이 아예 없다는 것.

  • 업로드 endpoint 가 없습니다

    이미지를 받는 주소가 코드에 아예 없습니다. 앱이 네트워크로 가져오는 건 자기 자신과 업스케일 모델뿐이고, 이미지를 실어 내보내는 요청은 어디에도 없습니다.

  • 대기열도, 서버 용량 제한도 없습니다

    한도를 정하는 건 서버가 아니라 기기입니다. 기기가 알려 주는 성능을 보고 출력 픽셀 수와 애니메이션 프레임 상한을 정합니다.

  • 계정도, 로그인도 없습니다

    가입 절차가 없습니다. 페이지를 여는 것이 준비의 전부입니다.

  • AI 모델도 이 기기에서 돕니다

    업스케일 모델은 브라우저가 직접 내려받아 onnxruntime-web 으로 실행합니다. 추론 서버를 거치지 않습니다.

파일이 지나가는 길

  1. 1

    헤더 읽기

    파일 앞부분만 읽어 크기와 EXIF 방향을 확인합니다. 전체를 디코딩하지 않습니다.

  2. 2

    worker 에서 인코딩

    자르기 · 회전 · 크기 조절부터 인코딩까지 Web Worker 안에서 순서대로 처리합니다. 그동안 화면은 멈추지 않습니다.

  3. 3

    다운로드

    결과는 브라우저가 만든 파일입니다. 한 장이면 그대로, 여러 장이면 zip 으로 묶어 내려받습니다.

인코더는 Rust 로 만들어 wasm 으로 빌드했고, 업스케일은 onnxruntime-web 으로 ONNX 모델을 실행합니다.

자주 묻는 질문