MetaRinse 가이드
MetaRinse가 이미지를 브라우저 안에서 처리하는 방식
MetaRinse는 브라우저의 File API와 이미지 디코딩, 캔버스, 임시 객체 URL을 이용합니다. 이미지 데이터와 읽어 낸 메타데이터는 서버로 보내지 않습니다.

브라우저 안에서 처리되는 순서
| 단계 | 브라우저에서 하는 일 | 외부 전송 |
|---|---|---|
| 파일 선택 | 사용자가 직접 고른 기기 내 파일을 받음 | 없음 |
| 메타데이터 확인 | 지원하는 환경에서는 워커에서 exifr로 분석 | 없음 |
| 디코딩 | createImageBitmap 또는 이미지 요소로 픽셀을 읽음 | 없음 |
| 재인코딩 | OffscreenCanvas 또는 canvas로 새 파일 데이터를 만듦 | 없음 |
| 결과 검증 | 새로 만든 파일의 메타데이터를 다시 분석 | 없음 |
| 다운로드 | 임시 객체 URL로 브라우저 메모리의 결과 파일에 연결 | 없음 |
처리 흐름 한눈에 보기
- 기기 내 파일사용자가 직접 선택
- 정보 확인파일 형식과 메타데이터 분석
- 디코딩브라우저 메모리에서 이미지 픽셀을 읽음
- 재인코딩캔버스로 새 이미지 파일을 만듦
- 결과 검증새 파일의 메타데이터를 다시 분석
- 다운로드임시 객체 URL로 결과 파일에 연결
기기 내 파일 → 파일 형식 확인 → 메타데이터 분석 → 이미지 디코딩 → 캔버스 처리 → 새 파일 생성 → 결과 재검사 → 다운로드 순서로 진행됩니다. 이 과정에 서버 업로드 단계는 없습니다.
재인코딩이 메타데이터를 제거하는 이유
MetaRinse는 원본 파일 구조를 그대로 복사하지 않습니다. 브라우저가 화면에 표시할 픽셀을 읽고, 그 픽셀로 새 JPEG, PNG 또는 WebP 파일을 만들도록 요청합니다.
이때 원본의 EXIF, XMP, IPTC 계열 데이터는 새 파일을 만드는 인코더에 전달되지 않습니다. 브라우저마다 동작이 다를 수 있으므로, 완성된 파일도 다시 분석해 실제 결과를 확인합니다.
브라우저 지원에 따른 처리 방식
Worker, createImageBitmap, OffscreenCanvas를 지원하는 브라우저에서는 메타데이터 분석과 인코딩을 화면 동작과 분리된 워커에서 처리합니다. 메모리를 너무 많이 쓰지 않도록 파일은 한 장씩 차례로 진행합니다.
OffscreenCanvas를 지원하지 않으면 메인 스레드에서 별도의 canvas 처리 방식을 사용합니다. 사용자가 취소하면 남아 있는 작업을 멈추고 완성되지 않은 결과를 버립니다.
임시 객체 URL을 지우는 시점
미리보기와 다운로드에 쓰는 blob: URL은 브라우저 메모리에 있는 데이터를 가리키는 임시 주소입니다. 목록에서 이미지를 제거하거나 결과를 지울 때, 또는 페이지를 닫거나 다른 페이지로 이동할 때 이 주소를 해제합니다.
파일과 메타데이터는 localStorage나 IndexedDB, 사용자 계정에 저장하지 않습니다.
사이트를 열 때 발생하는 일반 요청
사이트를 열면 HTML, JavaScript, CSS, 사이트에 포함된 글꼴 파일을 받기 위한 일반적인 웹 요청이 발생합니다. 이때 호스팅 서비스는 IP 주소나 브라우저 정보처럼 통상적인 접속 정보를 받을 수 있습니다.
이미지 도구를 포함한 사이트 전체 페이지에서 Google AdSense를 불러올 수 있으며 Google Analytics는 분석을 허용한 뒤에만 불러옵니다. 선택한 이미지 데이터와 파일명, 메타데이터, 미리보기, 이미지 해시는 어떤 요청에도 포함하지 않습니다.
처리 과정에서 달라질 수 있는 점
- JPEG와 WebP는 선택한 품질에 따라 손실 압축으로 다시 인코딩됩니다.
- PNG도 새로 만들어지므로 색상 프로필과 관련된 정보가 달라질 수 있습니다.
- 파일 크기와 아주 미세한 픽셀 값이 원본과 달라질 수 있습니다.
- 제조사가 독자적으로 저장한 메타데이터는 MetaRinse가 읽지 못할 수 있습니다.
- 사진에 보이는 정보와 파일명은 메타데이터와 별도로 확인해야 합니다.
출처
관련 가이드
선택한 이미지는 서버로 보내지 않습니다.