위에서 파일을 고르면 바로 열립니다.준비됨 — 인터넷을 끊어도 이대로 동작합니다.이 브라우저에서는 쓸 수 없습니다 (나머지는 그대로 동작합니다).오프라인 저장에는 https:// 또는 localhost가 필요합니다.여기서는 저장할 수 없지만, 어느 쪽이든 올라가는 것은 없습니다.파일은 어디로도 가지 않았습니다. 파일 {total}개를 불러왔고 모두 이 사이트의 것입니다. {platform}무언가가 {hosts}에 접속했는데, 이 도구는 절대 그러지 않습니다. 살펴볼 만합니다. {platform}광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.문제가 생겼습니다: {detail}. 처음부터 다시 하려면 페이지를 새로 고치세요.파일 {count}개를 읽는 중…파일 {count}개를 읽는 중…예시로 해 보기예시를 만드는 중…이 브라우저에서는 예시를 만들지 못했습니다. 대신 파일을 골라 주세요.
이미지를 디코딩하고, 그 위에 칠하고, 다시 인코딩하는 일은 모두 이 브라우저가 이미 갖고 있는 코덱으로 합니다. 이 도구에는 네트워크 기능이 아예 없어서 무언가를 가져올 수도, 보낼 수도 없습니다. 이 사이트의 다른 어떤 페이지보다 여기서 그 사실이 중요합니다. 가리기 도구에 올라오는 이미지는 이름과 주소와 계좌번호가 아직 읽히는 바로 그 이미지이기 때문입니다.
✗ 업로드 없음
✗ 계정 없음
✗ 워터마크 없음
✓ 오프라인 작동
✓ 오픈 소스
실시간 확인:확인 중…
오프라인:확인 중…
말만 믿으실 필요는 없습니다. 개발자 도구를 열고 네트워크 탭을 보면서 캡처 화면을 하나 가려 보세요. 이미지도, 썸네일도, 파일 이름도, 상자를 놓은 위치조차 어떤 요청에도 실리지 않습니다. 아니면 인터넷을 끊고 그대로 해 보셔도 됩니다.
이 약속을 직접 확인하는 방법
이미지가 나갈 곳이 없습니다. 이 페이지가 접속할 수 있는 주소는 Content-Security-Policy에 모두 적혀 있고, 그중 어느 것도 이 사이트의 것이 아닙니다. 파일이 모일 수 있는 수신 지점이 여기에는 없고, 있다 해도 그리로 보낼 코드가 없습니다.
가려진 픽셀은 나가는 길이 아니라 여기서 사라집니다. 이미지는 픽셀 버퍼로 디코딩되고, 상자는 그 버퍼에 직접 쓰이고, 버퍼가 인코더로 넘어갑니다. 상자를 별도 레이어로 갖고 있는 이미지는 이 페이지 어디에도 없습니다. 애초에 만들어지지 않기 때문입니다. src/redact.js를 보시면 됩니다.
여기서는 아무것도 가져오지 않습니다.src/ 어디에도 fetch도, XMLHttpRequest도, sendBeacon도 없습니다. 하는 일은 getImageData와 바이트를 도는 세 개의 반복문, 그리고 canvas.toBlob뿐이고, 모두 브라우저에 이미 들어 있는 기능입니다.
상자에 대해서는 어디에도 보고하지 않습니다. 어디에 그렸는지, 몇 개인지, 얼마나 큰지, 어떤 방식을 골랐는지는 페이지를 닫을 때까지 이 페이지의 메모리에만 있습니다. 그것을 실어 나르는 분석 이벤트는 이 저장소에 하나도 없고, 내려받은 뒤 나오는 그 한 가지 질문이 보내는 것은 좋아요/싫어요와 도구 이름뿐입니다.
오프라인에서도 작동합니다. 네트워크를 끊어도 도구는 그대로입니다. 애초에 네트워크 단계가 없었기 때문입니다. 가장 간단한 증명이고, 여권을 가리기 전에 한 번 해 볼 만한 확인입니다.
직접 확인해 보세요. 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 dist 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다:
먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 config/site.toml, 픽셀을 덮어쓰는 세 함수는 src/redact.js, 화면에 보이는 것이 바로 그 세 함수로 그려지는 이유는 src/preview.js입니다.
회사 보안 소프트웨어가 업로드를 경고한다면. 그것은 브라우저에서 파일이 선택되는 순간을 지켜보며, 페이지가 그것을 보낼 생각인지는 알 수 없습니다 — 그래서 고르는 순간에 경고합니다. 여기서는 아무것도 보내지 않습니다. 브라우저 개발자 도구를 열고 네트워크 탭으로 옮긴 뒤 파일을 골라 보세요. 그것을 실어 나르는 요청은 없고, 이 페이지 자체의 로컬 미리보기 말고는 요청 자체가 없습니다. 같은 확인을 IT 팀도 삼십 초면 할 수 있습니다.
1 이미지 고르기
은행 명세서 캡처, 여권 사진, 주소가 찍힌 고지서. 가려야 하는 이미지는 그 작업을 하겠다고 낯선 서버에 올려서는 안 되는 이미지와 정확히 같습니다. 이 이미지는 브라우저가 디스크에서 바로 읽습니다.
2 보이면 안 되는 곳 가리기
이미지 위를 끌면 상자가 그려집니다. 상자는 끌어서 옮기고 손잡이로 크기를 바꿉니다. Tab 키로 상자에 옮겨 가 화살표 키로 다룰 수도 있고, Alt와 화살표 키는 크기를, Delete 키는 삭제를 합니다. 상자 아래 보이는 것이 실제 결과입니다. 미리보기는 파일을 쓰는 바로 그 코드가 화면 크기로 그린 것입니다.
검게 칠하기 가장자리까지 한 가지 색입니다. 거기 있던 것은 아무것도 남지 않습니다. 테두리도, 평균값도, 글자 수도 남지 않습니다. 셋 중 이야기가 끝나는 것은 이것뿐이고, 글자로 읽히는 것에는 이것을 쓰셔야 합니다.
모자이크 각 블록이 그 블록의 평균색이 됩니다. 원래 픽셀은 정말로 파일에서 사라지지만, 평균의 격자는 여전히 아래 있던 것에 대한 측정값입니다. 흔한 글꼴의 글자라면 그것만으로 원본을 되살린 연구가 공개돼 있습니다. 사람들 틈의 얼굴에는 좋지만 계좌번호에는 맞지 않습니다.
흐리게 각 픽셀이 이웃들의 가중 평균이 됩니다. 모자이크와 같은 문제이고, 조금 더 분명합니다. 흐리게는 합성곱이고 합성곱은 원리상 되돌릴 수 있습니다. 감추려는 것이 아니라 부드럽게 하려는 자리에 쓰세요.
이미지를 고르면 여기에 나와서 상자를 그릴 수 있습니다.
3 가린 사본 저장하기
이미지는 픽셀로 디코딩되고, 상자는 그 픽셀 위에 쓰이고, 결과가 새 파일로 인코딩됩니다. 레이어도, 주석도, 상자가 어디 있었는지에 대한 기록도 없습니다. 가려진 픽셀은 인코더가 무언가를 받기 전에 존재하지 않게 되기 때문입니다.
형식 가리기와는 무관합니다. 인코더가 볼 때 픽셀은 이미 사라진 뒤입니다. 이 선택이 정하는 것은 나머지 이미지의 용량과 압축 방식뿐입니다.
나중에 열어서 가린 글자를 선택해 보거나, 편집 프로그램에 붙여 넣고 레이어를 찾아보세요. 찾을 것이 없습니다. 평평한 이미지 한 장이고, 가린 자리는 파일이 쓰이기 전에 덮어써졌습니다.
이 브라우저는 그림을 디코딩하지 못했습니다.이 파일은 열지 못했습니다: {why}{name} — {width} x {height}{x}, {y}에 {width} x {height}{where} — 모자이크, {size} px 블록 ({across} x {down}){where} — 흐리게, 반지름 {radius} px{where} — 검게 가림영역 {n}: {what}. 화살표 키로 옮기고, Alt와 화살표 키로 크기를 바꾸며, Delete로 지웁니다.영역 {n}이 하는 일검게 가리기모자이크흐리게검게 가림 {n}개검게 가림 {n}개모자이크 {n}개모자이크 {n}개흐리게 {n}개흐리게 {n}개영역 {n}개: {parts}.영역 {n}개: {parts}.약하게보통강하게{label} — 상자의 짧은 변을 따라 약 {blocks}블록, 흐림 반지름은 그 1/{blur}입니다.여기서 가장 고운 모자이크는 {size} px 블록이 {across} x {down}입니다. 그 아래 있던 것의 평균이 {averages}개, 파일에 그대로 남는다는 뜻입니다.흐림의 반지름은 {radius} px입니다. 흐림도 평균이고, 또렷한 글자 위에 옅게 건 흐림이야말로 이미 되짚어 풀린 사례입니다.가장 작은 흐림의 반지름은 {radius} px입니다. 흐림도 평균이고, 또렷한 글자 위에 옅게 건 흐림이야말로 이미 되짚어 풀린 사례입니다.글자로 읽히는 것은 모두 검게 가리세요.브라우저가 인코딩하지 못했습니다.파일을 쓰는 중에 문제가 생겼습니다: {why}가린 그림, {width} × {height} 픽셀{name} — {size}, {width} x {height}표시한 영역이 없어서, 같은 그림을 다시 인코딩한 것입니다.가린 픽셀에서 써낸 것이라 EXIF도 GPS도 끼워 넣은 미리보기도, 원본이 든 레이어도 없습니다.{a} {b}{a}, {b}{n} B{n} KB{n} MB이미지는 어디로도 가지 않았습니다. 파일 {total}개를 불러왔고 모두 이 사이트의 것입니다. {platform}무언가가 {hosts}에 접속했는데, 이 도구는 절대 그러지 않습니다. 살펴볼 만합니다. {platform}광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 이미지나 그 1바이트도 받지 않았습니다.광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 이미지나 그 1바이트도 받지 않았습니다.
원하는 결과가 나왔나요?
무엇이 잘못됐나요?
고맙습니다 — 큰 도움이 됩니다.
보내지는 것은 답변뿐이고, 그것도 버튼을 눌렀을 때만입니다. 파일도, 파일 이름도, 파일에 관한 어떤 정보도 보내지 않습니다.
# 이미지 가리기 — 검게 칠하기, 모자이크, 흐리게
가린 부분은 파일에서 지워집니다. 파일 안에 숨겨 두는 것이 아닙니다.
> 사진이나 캡처 화면의 이름, 주소, 계좌번호를 가리고 다시 저장합니다. 가려진 픽셀은 사각형 아래 남아 있는 것이 아니라 파일에서 사라집니다. 모든 작업은 브라우저 안에서 이뤄집니다.
이 페이지는 브라우저 안에서만 동작하는 대화형 도구입니다(https://abox.tools/ko/이미지-가리기/). 도구에 넘긴 어떤 것도 업로드되지 않습니다. 아래는 이 페이지가 도구에 대해 글로 설명하는 내용 전부입니다. 도구를 쓰려면 이 주소를 여세요.
## 이미지는 **절대 업로드되지 않습니다**. 서버가 아예 없으니까요.
이미지를 디코딩하고, 그 위에 칠하고, 다시 인코딩하는 일은 모두 이 브라우저가 이미 갖고 있는 코덱으로 합니다. 이 도구에는 네트워크 기능이 아예 없어서 무언가를 가져올 수도, 보낼 수도 없습니다. 이 사이트의 다른 어떤 페이지보다 여기서 그 사실이 중요합니다. 가리기 도구에 올라오는 이미지는 이름과 주소와 계좌번호가 아직 읽히는 바로 그 이미지이기 때문입니다.
- ✗ 업로드 없음
- ✗ 계정 없음
- ✗ 워터마크 없음
- ✓ 오프라인 작동
- ✓ 오픈 소스
## 가린 부분이 정말로 사라지도록 이미지를 가리는 방법
1. **이미지를 고릅니다.** 캡처 화면이든 스캔본이든 사진이든, 브라우저가 열 수 있는 것이면 됩니다. 디스크에서 바로 읽어 들이고, 그동안 어디로도 나가지 않습니다.
2. **보이면 안 되는 곳에 상자를 그립니다.** 그다음 것에도 하나 더 그리면 됩니다. 상자는 끌어서 옮기고 손잡이로 크기를 바꿉니다. Tab 키로 상자에 옮겨 가 화살표 키로 다룰 수도 있습니다. 상자 아래 보이는 것이 실제 결과이고, 파일을 쓰는 바로 그 코드가 그린 것입니다.
3. **검게 칠하기, 모자이크, 흐리게 중에 고릅니다. 되도록 검게 칠하세요.** 검게 채우면 아무것도 남지 않습니다. 모자이크와 흐리게는 픽셀을 그 자신의 평균으로 바꿀 뿐이라, 배경에 찍힌 얼굴에는 충분해도 글자로 읽히는 것에는 부족합니다.
4. **“가리고 저장”을 누른 뒤 파일을 확인합니다.** 그다음에 보이는 이미지는 완성된 파일을 다시 디코딩한 것입니다. 편집 프로그램에서 열어 레이어를 찾아보거나, 가린 글자를 선택해 보세요. 평평한 이미지 한 장뿐이고, 가린 자리는 파일이 쓰이기 전에 덮어써졌습니다.
## 자세한 설명
[가린 부분이 정말로 사라지도록 이미지를 가리는 방법](https://abox.tools/ko/가이드/이미지-가리기/): 대부분의 프로그램이 그리는 검은 사각형은 이미지 위에 얹혀 있어서 옆으로 밀어낼 수 있습니다. 진짜 가리기와 덮어 두기의 차이, 모자이크한 글자가 다시 읽히는 이유, 그리고 보내기 전에 파일을 확인하는 방법.
## 상자 속 다른 도구
- [EXIF 확인 및 제거](https://abox.tools/ko/exif-정보-삭제/): 사진이 나에 대해 뭘 흘리고 있는지 확인하고, 빼냅니다.
- [DICOM 뷰어](https://abox.tools/ko/dicom-뷰어/): CT, MRI, 엑스레이, 초음파를 창과 헤더와 계측까지.
- [이미지를 ICO로](https://abox.tools/ko/파비콘-만들기/): 그림 하나를 넣으면, 브라우저와 윈도우와 맥이 요구하는 모든 크기가 나옵니다.
- [이미지를 데이터 URI로](https://abox.tools/ko/이미지-base64-변환/): 사진 전체를 텍스트 한 줄로. CSS나 HTML에 그대로 붙여 넣으세요.
## 자주 묻는 질문
### 제 이미지가 어딘가로 업로드되나요?
아닙니다. 파일을 디코딩하고 가리고 다시 인코딩하는 일은 모두 이 브라우저가 이 기기에서 합니다. 이 도구에는 네트워크 기능이 아예 없어서 무언가를 가져오지도, 보내지도 않습니다. 페이지의 `Content-Security-Policy`에는 접속할 수 있는 주소가 모두 적혀 있고, 그중 어느 것도 이 사이트의 것이 아닙니다. 페이지를 한 번 불러온 뒤 인터넷을 끊어도 그대로 작동합니다.
### 가린 부분이 정말 파일에서 사라지나요?
네, 그래서 이 도구가 있습니다. 이미지는 픽셀 버퍼로 디코딩되고, 상자는 그 안의 픽셀을 덮어쓰고, 버퍼는 새 파일로 인코딩됩니다. 인코더가 무언가를 받기 전에 원래 값은 이미 메모리에서 사라지기 때문에 숨길 레이어도, 지울 주석도, 되돌릴 기록도 없습니다. 확인은 남의 주장을 확인하듯 하시면 됩니다. 결과를 이미지 편집기에서 열어 두 번째 레이어를 찾아보거나, 가린 글자를 선택해 보세요.
### 모자이크나 흐리게 처리한 부분을 복원할 수 있나요?
가능한 경우가 있고, 고르기 전에 읽어 둘 값어치가 있는 대목은 이것 하나입니다. 검게 채우면 아래 있던 것이 전부 한 가지 색으로 바뀌므로 아무것도 남지 않습니다. 테두리도, 평균값도, 글자 수도 남지 않습니다. 모자이크는 각 블록을 그 블록의 평균으로 바꾸는데, 평균의 격자는 여전히 아래 있던 것에 대한 측정값입니다. 흔한 글꼴에 크기도 짐작되는 글자라면, 후보 문자열을 똑같이 그려 평균을 맞춰 보는 방식으로 원본을 되살린 연구가 공개돼 있습니다. 흐리게는 합성곱이고, 합성곱은 원리상 되돌릴 수 있습니다. 배경에 찍힌 얼굴은 모자이크로 두셔도 되지만, 글자로 읽히는 것은 검게 칠하세요.
### 문서 프로그램에서 검은 사각형을 그리는 것과 무엇이 다른가요?
대부분의 프로그램이 그 사각형을 이미지 안이 아니라 이미지 옆에 저장하기 때문입니다. PDF 뷰어나 슬라이드, 워드프로세서, 레이어가 있는 이미지 편집기에서 그린 도형은 위치를 가진 채 문서 위에 얹혀 있는 개체입니다. 옮기거나 지우거나 다른 프로그램에서 열면 가려 두었던 것이 그대로 다시 나옵니다. 신문사도, 법원도, 정부 부처도 그런 방식으로 문서를 공개한 적이 있습니다. 여기서는 사각형이 아예 저장되지 않습니다. 남는 것은 원래 값 위에 쓰인 픽셀 값뿐입니다.
### EXIF와 GPS 정보도 지워지나요?
네, 부수적으로 지워집니다. 저장이란 픽셀로 채운 캔버스를 인코딩하는 일이고, 캔버스는 태그를 갖고 있지 않습니다. 촬영 위치도, 카메라 기종도, 시각도, 내장 썸네일도 새 파일에는 그냥 쓰이지 않습니다. 썸네일은 특히 중요합니다. 이미지의 작은 두 번째 사본인데 사진을 편집해도 늘 새로 만들어지지는 않아서, 가린 사진이 가리기 전 썸네일을 달고 나가면 작업 전체가 무의미해집니다. 이미지를 다시 인코딩하지 않고 메타데이터만 없애고 싶다면 [EXIF 확인 및 제거](https://abox.tools/ko/exif-정보-삭제/)가 컨테이너 쪽을 다시 씁니다.
### 어떤 형식을 읽고 쓸 수 있나요?
브라우저가 디코딩할 수 있는 것은 모두 읽습니다. 실제로는 JPEG, PNG, WebP, GIF, BMP이고 요즘 브라우저 대부분에서는 AVIF도 됩니다. 쓰는 쪽은 JPEG, PNG, WebP인데, 브라우저에 들어 있는 인코더가 그것들이기 때문입니다. “자동”에서는 JPEG는 JPEG로, 나머지는 PNG로 나옵니다. 사진은 사진다운 용량을 유지하고, 캡처 화면에 남겨 둔 글자는 또렷하게 남습니다. 이 선택은 가리기와는 무관합니다. 인코더가 볼 때 픽셀은 이미 사라진 뒤입니다.
### 마우스 없이도 할 수 있나요?
됩니다. “가운데에 상자 추가”로 하나를 올리고, Tab 키로 상자 사이를 옮기고, 화살표 키로 선택된 상자를 움직이고, Alt와 화살표 키로 크기를 바꿉니다. Shift를 누르면 한 번에 10픽셀씩 움직이고 Delete 키로 지웁니다. 상자마다 이미지 아래에 크기와 위치, 무슨 일을 하는지, 그리고 지우기 단추가 있는 줄도 함께 나오므로 도구 전체를 키보드로 쓸 수 있고 스크린 리더로 읽을 수 있습니다.
### 휴대폰에서도 되나요?
됩니다. 그리기, 옮기기, 크기 바꾸기가 마우스 이벤트가 아니라 포인터 이벤트라 손가락으로도 똑같이 되고, 터치 화면에서는 손잡이가 더 크게 그려집니다. 화면의 이미지는 작업하는 동안 화면 크기로 다시 그려지고, 파일 자체는 단추를 누르는 순간 원래 해상도 그대로 가려집니다.
### 무료인가요? 계정이 필요한가요?
무료이고 계정도, 로그인도, 체험 기간도, 워터마크도 없습니다. 이미지 크기 제한도 없습니다. 비용을 대는 서버가 없고 작업이 이 기기에서 일어나기 때문입니다. 사이트는 광고로 운영되지만, 광고 쪽에 이미지에 관한 것은 아무것도 넘기지 않습니다.
## 이 약속을 직접 확인하는 방법
- **이미지가 나갈 곳이 없습니다.** 이 페이지가 접속할 수 있는 주소는 Content-Security-Policy에 모두 적혀 있고, 그중 어느 것도 이 사이트의 것이 아닙니다. 파일이 모일 수 있는 수신 지점이 여기에는 없고, 있다 해도 그리로 보낼 코드가 없습니다.
- **가려진 픽셀은 나가는 길이 아니라 여기서 사라집니다.** 이미지는 픽셀 버퍼로 디코딩되고, 상자는 그 버퍼에 직접 쓰이고, 버퍼가 인코더로 넘어갑니다. 상자를 별도 레이어로 갖고 있는 이미지는 이 페이지 어디에도 없습니다. 애초에 만들어지지 않기 때문입니다. `src/redact.js`를 보시면 됩니다.
- **여기서는 아무것도 가져오지 않습니다.** `src/` 어디에도 `fetch`도, `XMLHttpRequest`도, `sendBeacon`도 없습니다. 하는 일은 `getImageData`와 바이트를 도는 세 개의 반복문, 그리고 `canvas.toBlob`뿐이고, 모두 브라우저에 이미 들어 있는 기능입니다.
- **상자에 대해서는 어디에도 보고하지 않습니다.** 어디에 그렸는지, 몇 개인지, 얼마나 큰지, 어떤 방식을 골랐는지는 페이지를 닫을 때까지 이 페이지의 메모리에만 있습니다. 그것을 실어 나르는 분석 이벤트는 이 저장소에 하나도 없고, 내려받은 뒤 나오는 그 한 가지 질문이 보내는 것은 좋아요/싫어요와 도구 이름뿐입니다.
- **오프라인에서도 작동합니다.** 네트워크를 끊어도 도구는 그대로입니다. 애초에 네트워크 단계가 없었기 때문입니다. 가장 간단한 증명이고, 여권을 가리기 전에 한 번 해 볼 만한 확인입니다.
**직접 확인해 보세요.** 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 `dist` 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다: https://github.com/A-Box-of-Tools/website
먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 `config/site.toml`, 픽셀을 덮어쓰는 세 함수는 `src/redact.js`, 화면에 보이는 것이 바로 그 세 함수로 그려지는 이유는 `src/preview.js`입니다.
가린 부분이 정말로 사라지도록 이미지를 가리는 방법
이미지를 고릅니다. 캡처 화면이든 스캔본이든 사진이든, 브라우저가 열 수 있는 것이면 됩니다. 디스크에서 바로 읽어 들이고, 그동안 어디로도 나가지 않습니다.
보이면 안 되는 곳에 상자를 그립니다. 그다음 것에도 하나 더 그리면 됩니다. 상자는 끌어서 옮기고 손잡이로 크기를 바꿉니다. Tab 키로 상자에 옮겨 가 화살표 키로 다룰 수도 있습니다. 상자 아래 보이는 것이 실제 결과이고, 파일을 쓰는 바로 그 코드가 그린 것입니다.
검게 칠하기, 모자이크, 흐리게 중에 고릅니다. 되도록 검게 칠하세요. 검게 채우면 아무것도 남지 않습니다. 모자이크와 흐리게는 픽셀을 그 자신의 평균으로 바꿀 뿐이라, 배경에 찍힌 얼굴에는 충분해도 글자로 읽히는 것에는 부족합니다.
“가리고 저장”을 누른 뒤 파일을 확인합니다. 그다음에 보이는 이미지는 완성된 파일을 다시 디코딩한 것입니다. 편집 프로그램에서 열어 레이어를 찾아보거나, 가린 글자를 선택해 보세요. 평평한 이미지 한 장뿐이고, 가린 자리는 파일이 쓰이기 전에 덮어써졌습니다.
자세한 설명
가린 부분이 정말로 사라지도록 이미지를 가리는 방법대부분의 프로그램이 그리는 검은 사각형은 이미지 위에 얹혀 있어서 옆으로 밀어낼 수 있습니다. 진짜 가리기와 덮어 두기의 차이, 모자이크한 글자가 다시 읽히는 이유, 그리고 보내기 전에 파일을 확인하는 방법.
아닙니다. 파일을 디코딩하고 가리고 다시 인코딩하는 일은 모두 이 브라우저가 이 기기에서 합니다. 이 도구에는 네트워크 기능이 아예 없어서 무언가를 가져오지도, 보내지도 않습니다. 페이지의 Content-Security-Policy에는 접속할 수 있는 주소가 모두 적혀 있고, 그중 어느 것도 이 사이트의 것이 아닙니다. 페이지를 한 번 불러온 뒤 인터넷을 끊어도 그대로 작동합니다.
가린 부분이 정말 파일에서 사라지나요?
네, 그래서 이 도구가 있습니다. 이미지는 픽셀 버퍼로 디코딩되고, 상자는 그 안의 픽셀을 덮어쓰고, 버퍼는 새 파일로 인코딩됩니다. 인코더가 무언가를 받기 전에 원래 값은 이미 메모리에서 사라지기 때문에 숨길 레이어도, 지울 주석도, 되돌릴 기록도 없습니다. 확인은 남의 주장을 확인하듯 하시면 됩니다. 결과를 이미지 편집기에서 열어 두 번째 레이어를 찾아보거나, 가린 글자를 선택해 보세요.
모자이크나 흐리게 처리한 부분을 복원할 수 있나요?
가능한 경우가 있고, 고르기 전에 읽어 둘 값어치가 있는 대목은 이것 하나입니다. 검게 채우면 아래 있던 것이 전부 한 가지 색으로 바뀌므로 아무것도 남지 않습니다. 테두리도, 평균값도, 글자 수도 남지 않습니다. 모자이크는 각 블록을 그 블록의 평균으로 바꾸는데, 평균의 격자는 여전히 아래 있던 것에 대한 측정값입니다. 흔한 글꼴에 크기도 짐작되는 글자라면, 후보 문자열을 똑같이 그려 평균을 맞춰 보는 방식으로 원본을 되살린 연구가 공개돼 있습니다. 흐리게는 합성곱이고, 합성곱은 원리상 되돌릴 수 있습니다. 배경에 찍힌 얼굴은 모자이크로 두셔도 되지만, 글자로 읽히는 것은 검게 칠하세요.
문서 프로그램에서 검은 사각형을 그리는 것과 무엇이 다른가요?
대부분의 프로그램이 그 사각형을 이미지 안이 아니라 이미지 옆에 저장하기 때문입니다. PDF 뷰어나 슬라이드, 워드프로세서, 레이어가 있는 이미지 편집기에서 그린 도형은 위치를 가진 채 문서 위에 얹혀 있는 개체입니다. 옮기거나 지우거나 다른 프로그램에서 열면 가려 두었던 것이 그대로 다시 나옵니다. 신문사도, 법원도, 정부 부처도 그런 방식으로 문서를 공개한 적이 있습니다. 여기서는 사각형이 아예 저장되지 않습니다. 남는 것은 원래 값 위에 쓰인 픽셀 값뿐입니다.
EXIF와 GPS 정보도 지워지나요?
네, 부수적으로 지워집니다. 저장이란 픽셀로 채운 캔버스를 인코딩하는 일이고, 캔버스는 태그를 갖고 있지 않습니다. 촬영 위치도, 카메라 기종도, 시각도, 내장 썸네일도 새 파일에는 그냥 쓰이지 않습니다. 썸네일은 특히 중요합니다. 이미지의 작은 두 번째 사본인데 사진을 편집해도 늘 새로 만들어지지는 않아서, 가린 사진이 가리기 전 썸네일을 달고 나가면 작업 전체가 무의미해집니다. 이미지를 다시 인코딩하지 않고 메타데이터만 없애고 싶다면 EXIF 확인 및 제거가 컨테이너 쪽을 다시 씁니다.
어떤 형식을 읽고 쓸 수 있나요?
브라우저가 디코딩할 수 있는 것은 모두 읽습니다. 실제로는 JPEG, PNG, WebP, GIF, BMP이고 요즘 브라우저 대부분에서는 AVIF도 됩니다. 쓰는 쪽은 JPEG, PNG, WebP인데, 브라우저에 들어 있는 인코더가 그것들이기 때문입니다. “자동”에서는 JPEG는 JPEG로, 나머지는 PNG로 나옵니다. 사진은 사진다운 용량을 유지하고, 캡처 화면에 남겨 둔 글자는 또렷하게 남습니다. 이 선택은 가리기와는 무관합니다. 인코더가 볼 때 픽셀은 이미 사라진 뒤입니다.
마우스 없이도 할 수 있나요?
됩니다. “가운데에 상자 추가”로 하나를 올리고, Tab 키로 상자 사이를 옮기고, 화살표 키로 선택된 상자를 움직이고, Alt와 화살표 키로 크기를 바꿉니다. Shift를 누르면 한 번에 10픽셀씩 움직이고 Delete 키로 지웁니다. 상자마다 이미지 아래에 크기와 위치, 무슨 일을 하는지, 그리고 지우기 단추가 있는 줄도 함께 나오므로 도구 전체를 키보드로 쓸 수 있고 스크린 리더로 읽을 수 있습니다.
휴대폰에서도 되나요?
됩니다. 그리기, 옮기기, 크기 바꾸기가 마우스 이벤트가 아니라 포인터 이벤트라 손가락으로도 똑같이 되고, 터치 화면에서는 손잡이가 더 크게 그려집니다. 화면의 이미지는 작업하는 동안 화면 크기로 다시 그려지고, 파일 자체는 단추를 누르는 순간 원래 해상도 그대로 가려집니다.
무료인가요? 계정이 필요한가요?
무료이고 계정도, 로그인도, 체험 기간도, 워터마크도 없습니다. 이미지 크기 제한도 없습니다. 비용을 대는 서버가 없고 작업이 이 기기에서 일어나기 때문입니다. 사이트는 광고로 운영되지만, 광고 쪽에 이미지에 관한 것은 아무것도 넘기지 않습니다.