이미지 압축과 업스케일, 브라우저 안에서 끝냅니다
파일을 올려 둘 곳이 없습니다. 이미지를 놓으면 이 브라우저 안에서 바로 처리됩니다.
이미지를 여기에 놓으세요
화면 어디에나 끌어다 놓을 수 있습니다
지원 포맷 · PNG · JPEG · WEBP · AVIF · GIF
파일이 브라우저를 벗어나지 않습니다
서버가 하는 일이 없습니다
아래는 전부 한 가지에서 따라옵니다 — 이미지를 보낼 곳이 아예 없다는 것.
업로드 endpoint 가 없습니다
이미지를 받는 주소가 코드에 아예 없습니다. 앱이 네트워크로 가져오는 건 자기 자신과 업스케일 모델뿐이고, 이미지를 실어 내보내는 요청은 어디에도 없습니다.
대기열도, 서버 용량 제한도 없습니다
한도를 정하는 건 서버가 아니라 기기입니다. 기기가 알려 주는 성능을 보고 출력 픽셀 수와 애니메이션 프레임 상한을 정합니다.
계정도, 로그인도 없습니다
가입 절차가 없습니다. 페이지를 여는 것이 준비의 전부입니다.
AI 모델도 이 기기에서 돕니다
업스케일 모델은 브라우저가 직접 내려받아 onnxruntime-web 으로 실행합니다. 추론 서버를 거치지 않습니다.
파일이 지나가는 길
- 1
헤더 읽기
파일 앞부분만 읽어 크기와 EXIF 방향을 확인합니다. 전체를 디코딩하지 않습니다.
- 2
worker 에서 인코딩
자르기 · 회전 · 크기 조절부터 인코딩까지 Web Worker 안에서 순서대로 처리합니다. 그동안 화면은 멈추지 않습니다.
- 3
다운로드
결과는 브라우저가 만든 파일입니다. 한 장이면 그대로, 여러 장이면 zip 으로 묶어 내려받습니다.
인코더는 Rust 로 만들어 wasm 으로 빌드했고, 업스케일은 onnxruntime-web 으로 ONNX 모델을 실행합니다.
자주 묻는 질문
아니요. 업로드 endpoint 자체가 없습니다. 브라우저가 이미지를 열어 브라우저 안에서 처리하고, 결과 파일도 브라우저가 만듭니다.
PNG · JPEG · WebP · AVIF 를 지원하고, 압축 도구는 애니메이션 GIF 도 프레임을 유지한 채 처리합니다. 출력은 원본 포맷을 그대로 두거나 원하는 포맷으로 지정할 수 있습니다.
서버가 정하는 제한이 없고, 파일 용량이나 개수를 따로 막지도 않습니다. 다만 처리에 이 기기의 메모리를 쓰기 때문에 출력 픽셀 수와 애니메이션 프레임 수 상한은 기기 성능에 맞춰 자동으로 정해집니다.
아니요. 가입도 로그인도 없습니다.
브라우저가 Real-ESRGAN ONNX 모델을 내려받아 onnxruntime-web 으로 실행합니다. 모델 파일은 처음 쓸 때 내려받아 브라우저 캐시에 남으므로 다음부터는 다시 받지 않아도 되고, 계산은 전부 이 기기에서 이뤄집니다.