# 이미지 크기 조절 — 사진 크기 바꾸기, 자르기, 변환

크기를 말하고, 상자를 그리고, 형식을 고르세요.

> JPEG, PNG, WebP 이미지를 브라우저에서 크기 바꾸고 자르고 변환합니다. 정확한 픽셀로도, 퍼센트로도, 긴 변 기준으로도. 한 장이든 폴더 하나든 됩니다. 아무것도 업로드되지 않습니다.

이 페이지는 브라우저 안에서만 동작하는 대화형 도구입니다(https://abox.tools/ko/이미지-크기-조절/). 도구에 넘긴 어떤 것도 업로드되지 않습니다. 아래는 이 페이지가 도구에 대해 글로 설명하는 내용 전부입니다. 도구를 쓰려면 이 주소를 여세요.

## 이미지 파일은 **절대 업로드되지 않습니다**. 서버가 아예 없으니까요.

크기 조절도, 자르기도, 형식 변경도 모두 내 브라우저가 내 기기의 성능으로, 브라우저에 이미 들어 있는 이미지 인코더를 써서 합니다. 이 도구에는 네트워크 기능이 하나도 없습니다. 가져올 것도 보낼 것도 없어요. 설령 보내려 해도 이 페이지 반대편에는 사진을 받아 줄 서버 자체가 없습니다.

- ✗ 업로드 없음
- ✗ 가입 없음
- ✗ 워터마크 없음
- ✓ 오프라인 동작
- ✓ 오픈 소스

## 업로드하지 않고 이미지 크기를 바꾸는 방법

1. **이미지를 고릅니다.** 선택 영역에 끌어다 놓거나 직접 골라 주세요. 브라우저가 디스크에서 곧바로 읽습니다. 그동안 어디로도 아무것도 나가지 않습니다.
2. **원한다면 자릅니다.** 상자는 사진 전체에서 시작하므로, 그대로 두면 아무것도 잘리지 않습니다. 끌어서 옮기거나 비율을 고정하세요. 프로필 사진이면 1:1, 스토리면 9:16, 썸네일이면 16:9입니다. "최대"를 누르면 들어맞는 가장 큰 상자가 잡히고요. 이미지마다 자기 상자를 따로 갖습니다. 목록의 아무 줄이나 누르면 그 이미지 위에 그리게 됩니다. 전부 같은 구도로 잡아야 한다면 버튼 하나가 그것도 해 줍니다.
3. **어떤 크기로 나올지 말합니다.** 너비만, 높이만, 또는 둘 다. 세로 사진과 가로 사진을 서로 같은 크기로 맞춰 주는 긴 변 기준. 아니면 그냥 퍼센트. 둘 중 한 칸을 비워 두면 사진이 자기 비율을 지킵니다.
4. **형식을 고르고 버튼을 누릅니다.** 파일이 들어온 형식을 그대로 두거나, 전부 JPEG나 PNG, WebP로 쓰세요. 결과마다 무엇이 되었고 얼마나 작아졌는지가 적힙니다. 하나를 누르면 원래 크기로 열리면서 뒤에 깔린 수치들과 비교할 원본이 함께 나옵니다. 여러 장은 zip 하나로 내려옵니다.

## 자세한 설명

[이미지를 망치지 않고 크기를 바꾸는 방법](https://abox.tools/ko/가이드/이미지-크기-바꾸기/): 픽셀 크기를 바꿀 때 사진에 무슨 일이 일어나는지. 줄이는 것은 안전하고 늘리는 것은 그렇지 않은 이유, 상자의 비율이 맞지 않을 때 할 일, 그리고 대신 잘라내야 할 때.

## 상자 속 다른 도구

- [HEIC를 JPG로](https://abox.tools/ko/heic-jpg-변환/): 아이폰이 만드는 사진을, 아무 데서나 열리는 형식으로.
- [증명사진 만들기](https://abox.tools/ko/증명사진-만들기/): 나라를 고르세요. 그 나라의 규정을 그대로 적용합니다.
- [이미지 스택](https://abox.tools/ko/이미지-스택/): 스무 장을 한 장으로. 스무 번의 업로드도, RAW 변환기도 없이.
- [이미지 가리기](https://abox.tools/ko/이미지-가리기/): 가린 부분은 파일에서 지워집니다. 파일 안에 숨겨 두는 것이 아닙니다.

## 자주 묻는 질문

### 제 이미지가 어딘가로 업로드되나요?

아닙니다. 파일을 디코딩하고 자르고 크기를 바꾸고 쓰는 일은 내 기기에서 도는 내 브라우저가 하고, 브라우저에 이미 들어 있는 JPEG, PNG, WebP 인코더를 씁니다. 이 도구에는 네트워크 기능이 하나도 없어서 무언가를 가져오지도, 보내지도 않습니다. 이 페이지의 `Content-Security-Policy`에 연결해도 되는 주소가 전부 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다.

### 너비만 주고 높이를 주지 않으면 어떻게 되나요?

높이는 사진 자기 비율을 따라갑니다. 대개 그게 원하던 것이죠. "가로 1920"은 "가로 1920, 세로는 거기 맞춰서"라는 뜻이니까요. 둘 다 채우면 그 둘이 사진의 비율과 어긋날 수 있는데, "비율이 어긋나면" 선택지가 나타나는 것은 그때뿐입니다. 상자 안에 맞추기, 채우고 넘치는 부분 잘라내기, 배경으로 여백 채우기, 아니면 늘여서 찌그러짐을 감수하기 중에서 고르시면 됩니다.

### 크기를 줄이면 화질이 떨어지나요?

작게 만드는 것은 눈에 띄는 방식으로는 떨어지지 않습니다. 나가는 픽셀보다 들어오는 픽셀이 많으니 남는 디테일은 진짜 디테일이니까요. 크게 만드는 것은 애초에 찍히지 않은 것을 만들어 낼 수 없습니다. 결과는 더 선명한 사본이 아니라 더 흐릿한 사본이고요. 그래서 "원본보다 크게 만들지 않음"이 기본으로 켜져 있습니다. 대가를 조금 치르는 것은 그다음의 재인코딩인데, 형식이 JPEG나 WebP일 때이고 화질 슬라이더로 그만큼을 조절합니다.

### 이미지마다 다르게 자를 수 있나요?

됩니다. 그게 기본입니다. 목록의 모든 이미지가 자기 픽셀 기준의 자기 상자를 갖고, 줄을 누르면 그 이미지가 자기 상자와 자기 고정 비율을 달고 미리보기에 올라옵니다. 하나에 한 일이 다른 것에 영향을 주지 않습니다. 모든 상자는 사진 전체에서 시작하므로, 한 번도 그리지 않은 이미지는 전혀 잘리지 않습니다.

### 여러 장을 한 번에 똑같이 자를 수도 있나요?

됩니다. 미리보기 아래 버튼으로요. 다른 모든 이미지에 같은 상대 영역, 그러니까 자기 너비와 높이의 같은 비율을 줍니다. 크기가 다 같은 스크린샷이나 내보내기 묶음이라면 결과적으로 정확히 같은 상자이고, 페이지가 그렇다고 알려 줍니다. 비율을 고정해 두었다면 대신 그 영역 안에 들어가는 그 비율의 가장 큰 상자를 각자에게 줍니다. 그래서 1:1을 누르고 그 버튼을 누르면 세로와 가로가 섞인 폴더에서 정사각형이 나옵니다. 그 뒤에도 모든 상자는 계속 고칠 수 있습니다.

### 어떤 형식을 읽고 쓸 수 있나요?

브라우저가 디코딩할 수 있는 것은 다 읽습니다. 실제로는 JPEG, PNG, WebP, GIF, BMP이고, 요즘 브라우저 대부분에서는 AVIF까지 읽습니다. 쓰는 쪽은 JPEG, PNG, WebP인데, 브라우저에 들어 있는 인코더가 그것뿐이기 때문입니다. "형식 유지"에서는 JPEG는 JPEG로, PNG는 PNG로 남습니다. 브라우저가 쓰지 못하는 GIF나 BMP 같은 것은 PNG로 나오는데, 투명도와 단색 면을 온전히 지키는 쪽이 그것이기 때문입니다.

### JPEG로 저장하면 투명한 부분은 어떻게 되나요?

배경색으로 채워집니다. JPEG에는 그걸 담을 알파 채널이 없기 때문입니다. 색은 직접 고르실 수 있고 기본값은 흰색인데, 대부분이 원하는 것이자 거의 모든 다른 도구가 말없이 하는 일이기도 합니다. 여백을 채울 때도 같은 색을 씁니다. PNG나 WebP로 저장하면 투명도가 손상 없이 그대로 넘어갑니다.

### EXIF와 GPS 정보도 지워지나요?

실제로 손대는 파일에서는 부수적으로 지워집니다. 자르거나 크기를 바꾼다는 것은 사진을 픽셀로 디코딩했다가 그 픽셀을 다시 인코딩한다는 뜻인데, 픽셀로 가득한 캔버스에는 태그가 붙어 있지 않아서 위치와 카메라 모델, 촬영 시각이 새 파일에는 아예 쓰이지 않습니다. 전혀 바꾸지 않는 파일은 경우가 다릅니다. 태그까지 통째로, 바이트 그대로 돌아오니까요. 메타데이터만 없애고 사진은 그대로 두고 싶다면 [EXIF 확인 및 제거](https://abox.tools/ko/exif-정보-삭제/)를 쓰세요. 다시 압축하지 않고 컨테이너만 새로 씁니다.

### 이미지 압축 도구와는 무엇이 다른가요?

이 도구는 크기를 다룹니다. 픽셀을 몇으로 하고 싶은지 말하면 그렇게 해 줍니다. [이미지 압축](https://abox.tools/ko/이미지-압축/)은 용량을 다룹니다. 몇 킬로바이트까지 허용되는지 말하면 거기 들어맞는 가장 높은 화질을 찾고, 화질만으로 닿지 못할 때만 크기를 줄입니다. "가로 1200픽셀"이라는 말을 들었다면 여기가 맞고, "500KB 이하"라는 말을 들었다면 저쪽이 더 가깝게 데려다줍니다.

### 무료인가요? 가입해야 하나요?

무료이고 계정도, 로그인도, 체험판도, 워터마크도 없습니다. 파일 개수나 용량 제한도 없습니다. 그 값을 치를 서버가 없으니까요. 작업은 내 기기에서 일어납니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 이미지에 관한 것은 넘어가지 않습니다.

### 오프라인에서도 되나요?

됩니다. 페이지를 한 번 불러온 다음 인터넷을 끊어도 계속 동작합니다. 아무것도 업로드되지 않는다는 가장 간단한 증명이기도 하고요. 이미지를 어딘가로 보내서 크기를 바꾸는 도구라면 선을 뽑는 순간 멈춰 버릴 테니까요.

## 이 약속을 직접 확인하는 방법

- **이미지는 나갈 곳이 없습니다.** 이 페이지가 연결해도 되는 주소는 Content-Security-Policy에 모두 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다. 파일이 모일 만한 수신 지점이 없고, 설령 있더라도 거기로 파일을 보낼 코드가 없습니다.
- **여기서는 아무것도 가져오지 않습니다.** `src/` 어디에도 `fetch`도, `XMLHttpRequest`도, `sendBeacon`도 없습니다. 크기 조절은 캔버스 위의 `drawImage` 하나와 `canvas.toBlob` 하나가 전부입니다. 브라우저에 이미 설치되어 있는 스케일러와 인코더예요.
- **바꿔 달라고 하지 않은 파일은 바뀌지 않습니다.** 자르기도, 크기 조절도, 형식 변경도 없다면 고르신 파일이 다시 저장되지 않고 바이트 그대로 되돌아옵니다. 예의로 하는 일이 아닙니다. 이 도구가 사진을 몰래 다시 인코딩하거나, 그냥 들여다보려던 사진의 메타데이터를 슬쩍 떨어뜨릴 수 없는 이유입니다.
- **구글이 불러오는 것과, 구글에게 주지 않는 것.** 광고와 측정 스크립트는 구글에서, 후원 버튼은 Buy Me a Coffee에서 옵니다. 어느 쪽에도 내 사진에 관한 것은 넘어가지 않습니다. 파일을 읽고 자르고 크기를 바꾸고 쓰는 코드는 한 줄도 빠짐없이 이 출처에서 제공되고 저장소에 공개되어 있습니다.
- **오프라인에서도 동작합니다.** 네트워크를 끊어도 도구는 그대로입니다. 애초에 네트워크를 쓰는 단계가 없었으니까요. 가장 간단한 증거입니다.

**직접 확인해 보세요.** 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 `dist` 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다: https://github.com/A-Box-of-Tools/website

먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 `config/site.toml`, 무엇이 남고 얼마나 큰 결과가 나올지를 정하는 산술은 `src/geometry.js`, 자르기와 크기 조절을 한꺼번에 해내는 `drawImage` 호출 하나는 `src/codecs.js`에 있습니다.
