오늘, ImgZilla 1.3이 Mac App Store에 정식 출시되었습니다.
핵심 기능은 명확합니다. Mac에 있는 이미지를 원래 위치에서 압축해 크기를 줄이는 것입니다. 파일 이름·경로·형식은 그대로 유지되고, 원본은 기본적으로 휴지통으로 이동해 언제든 복원할 수 있습니다.
이 모든 작업은 사용자의 Mac에서만 완료되며 인터넷 연결이 필요 없고, 이미지가 컴퓨터를 떠나지 않으며 어떤 서버에도 업로드되지 않습니다. 개인정보 보호와 데이터 보안은 처음부터 기본 설계에 포함됐습니다.
기능 자체는 단순해 보이지만, 우리는 여러 차례 테스트하고 뒤엎고 다시 만드는 과정을 반복했습니다. 이 글은 “어떤 기능을 만들었는지”가 아니라 실제 사용 환경에서 마주친 구체적인 문제와 최종적으로 어떻게 바꿨는지를 기록하려는 것입니다.
“원본 위치 덮어쓰기”라는 네 글자는 조금도 소홀할 수 없습니다
대부분의 이미지 압축 도구는 결과물을 photo-min.jpg로 따로 저장합니다. 안전하지만, 파일 이름이 바뀌면 상품 테이블의 참조, 웹 템플릿의 경로, 보관 폴더의 정렬까지 모두 수정해야 하는 번거로움이 생깁니다.
ImgZilla는 다른 길을 택했습니다. 압축 결과를 원래 경로·원래 파일 이름·원래 형식 그대로 덮어씁니다. JPG를 압축해도 여전히 JPG이므로 참조 코드는 한 줄도 고칠 필요가 없습니다.
그 대가는 이 도구가 사용자의 원본 파일을 직접 건드린다는 점입니다. 어느 단계라도 오류가 나면 사라지는 것은 캐시가 아니라 누군가 하루 종일 찍은 사진, 몇 년 동안 모은 소장본일 수 있습니다.
그래서 제품이 실제로 시간을 들인 곳은 압축 자체가 아니라—압축은 성숙한 인코더에 맡기면 됩니다—‘만약’을 둘러싼 보호 장치들입니다. 아래 개선 사항들은 모두 테스트 중 실제로 겪은 것들입니다.
테스트에서 고친 것들
1. 원본 보호 전략, 한 번 뒤엎었습니다
처음 설계는 원본을 별도의 백업 폴더에 복사하는 방식이었습니다. 논리는 맞지만 사용하기 어색했습니다. 백업 폴더가 조용히 커지고, 사용자는 몇 달 동안 압축을 하고 나서야 디스크에 원본 복사본이 하나 더 생겼다는 것을 알게 됩니다. 처음 원했던 것은 공간 절약이었는데 말입니다.
지금은 휴지통 우선입니다. 압축에 성공하면 원본을 먼저 시스템 휴지통으로 옮긴 다음 압축 결과를 원래 경로에 씁니다.
복원 방법도 모든 Mac 사용자가 이미 아는 동작이 됐습니다. 휴지통을 열고 마우스 오른쪽 버튼으로 ‘원래 위치로 복원’을 누르면 됩니다. 새로운 개념을 배울 필요도 없고, 계속 커지는 숨은 폴더도 생기지 않습니다. 이 옵션은 설정에서 기본으로 켜져 있으며, 끄면 원본을 덮어쓰고 복구할 수 없으므로 끌 때 한 번 더 확인 창이 표시됩니다.
2. 외장 하드디스크에서 뜨는 경고 창은 테스트 때문에 생겼습니다
이동식 하드디스크, NAS, 네트워크 볼륨에서 테스트할 때 macOS에서 흔한 문제를 만났습니다. 이런 위치에서는 파일을 휴지통으로 옮기지 못하는 경우가 자주 있습니다.
첫 버전은 오류를 표시하고 건너뛰는 방식이었습니다. 결과적으로 사용자가 폴더 전체를 끌어다 놓아도 아무 일도 일어나지 않았습니다.
지금은 압축을 일시정지하고 선택지를 묻는 창이 뜹니다.
- 백업 폴더 선택: 원본을 해당 폴더에 복사한 뒤 원본을 덮어씁니다.
- 백업 포기: 확인 후 바로 덮어쓰며 사본을 남기지 않습니다.
- 창 닫기: 취소로 간주하고 전체 작업을 중단합니다.
테스트 중 추가된 세부 사항도 있습니다. 선택한 내용이 이번에 처리할 나머지 모든 파일에 적용됩니다. 그렇지 않으면 500장을 압축할 때 창이 500번 연속으로 뜨기 때문입니다. 첫 버전이 실제로 그랬고, 직접 한 번 써보니 참을 수 없었습니다.
선택한 백업 폴더는 기본 백업 위치로 기록됩니다(
~/Library/Application Support/ImgZilla Backups/아래에 시간별 하위 폴더를 생성). 이후 같은 상황이 발생하면 이 위치를 우선 사용합니다.
3. ‘이미 최소화됨’: 차라리 아무것도 하지 않습니다
어떤 이미지는 끌어오기 전에 이미 압축된 경우가 있습니다(다른 도구로 압축했거나 이전에 ImgZilla로 처리했거나). 다시 압축해도 보통 0.몇 %의 용량 변화만 있을 뿐입니다. 그래서 우리는 확실한 규칙을 정했습니다. 압축률이 0.4% 미만이면 건드리지 않습니다. 목록에 ‘이미 최소화됨’으로 표시하고 원본 파일을 그대로 두며 무료 사용량도 차감하지 않습니다.
이 규칙은 통계 숫자를 덜 화려하게 만들 수 있습니다. 이미 압축된 이미지 묶음을 통째로 끌어오면 대부분 ‘이미 최소화됨’으로 표시될 수 있습니다. 하지만 우리는 성과를 보여주려고 이미지를 한 번 더 압축하는 도구는 당신의 원본 파일 위에 올려놓을 가치가 없다고 생각합니다.
4. 파일 확장자가 속일 때
테스트 샘플에는 확장자가 .png인데 실제로는 JPEG인 파일이 꽤 있었습니다. 여러 경로를 거치며 유통된 이미지가 생각보다 많습니다.
이제 ImgZilla는 파일 헤더의 매직 바이트를 읽어 실제 형식을 판별하고, 실제 형식에 맞는 인코더를 선택합니다. 확장자가 틀려도 올바르게 처리할 수 있습니다.
5. 병렬이 아니라 직렬 처리
한 장씩 순서대로 압축하면 ‘빠르지 않아 보일’ 수 있습니다. 병렬 처리도 시도해 봤고 속도는 확실히 빨라졌지만, 대량 작업에서 오류가 발생할 때 상태를 추적하기 어려워졌습니다. 이 도구는 사용자의 원본 파일을 덮어쓰는 중이니까요.
최고 속도보다 안정성을 우선해 직렬 처리를 유지했습니다. 참고로 직렬은 파일을 한 장씩 처리한다는 뜻이고, 이미지 압축 자체는 인코더 내부에서 멀티스레드를 활용하므로 CPU의 멀티코어 성능이 낭비되지 않습니다. UI 보상으로 이런 것들을 넣었습니다. 현재 처리 중인 항목이 보이는 영역으로 자동 스크롤되고, 마우스를 올리면 자동 스크롤이 일시정지되며, 하단에 처리한 장수와 절약한 용량을 실시간으로 표시하고, 전체 작업이 끝나면 시스템 알림을 보냅니다.
6. 무료 사용량이 떨어지면 작업은 ‘중단’이 아니라 ‘일시정지’
무료 버전은 하루 10장까지 압축할 수 있고 날짜가 바뀌면 자동으로 초기화됩니다. 테스트 중에 언제 끊기는지에 따라 경험이 완전히 달라진다는 것을 깨달았습니다. 200장을 끌어다 놓고 10장째에 바로 실패하고 종료되면 사용자는 파일을 전부 다시 추가해야 합니다. 그런 알림은 순전히 방해일 뿐입니다.
지금은 사용량이 떨어지면 작업이 그 자리에서 일시정지되고 구매 패널이 표시됩니다. 구매를 완료하면 끊긴 지점부터 나머지를 계속 압축하며 파일을 다시 추가할 필요가 없습니다. 또한 사용량은 압축에 성공했을 때만 차감됩니다. 압축 실패나 ‘이미 최소화’는 차감되지 않습니다.
7. 19개 언어 옵션과 그리 화려하지 않은 마무리
인터페이스는 19개 언어 옵션을 완전히 지원합니다(‘시스템 설정 따르기’, 간체·번체 중국어, English, 日本語, 한국어, 주요 유럽 언어, العربية, Tiếng Việt 등). 설정에서 언제든 전환할 수 있고 전환 즉시 적용되어 재시동할 필요가 없습니다.
이 작업은 예상보다 훨씬 많은 분량이었고 출시가 늦어진 이유 중 하나입니다. 하지만 전 세계 App Store에 출시하는 도구라면 사용자가 자신의 모국어로 보는 것은 가장 기본적인 존중입니다.
화질에 관해: 우리 말을 믿지 말고 직접 확인하세요
압축에서 가장 쌓기 어려운 것이 신뢰입니다. 그래서 분명히 말씀드립니다.
- PNG(oxipng)과 SVG(svgcleaner)는 진정한 무손실 압축이며 픽셀은 변하지 않습니다.
- JPEG, WebP, AVIF, HEIC/HEIF, GIF는 원리상 손실 재인코딩이지만 파라미터를 시각적 무손실 범위로 선택했습니다. 육안으로 거의 구별할 수 없지만 ‘무손실’은 아닙니다. 우리는 이 두 단어를 섞어 쓰지 않을 것입니다.
그리고 이 말을 믿음으로 받아들일 필요는 없습니다. ImgZilla에는 이미지 비교 창(⌘D)이 내장되어 있습니다. 왼쪽은 압축 전, 오른쪽은 압축 후이며 가운데 분할선을 좌우로 끌어 비교할 수 있고, 실제 크기로 확대해 세부 사항을 꼼꼼히 확인할 수 있습니다. 목록에서 압축에 성공한 이미지마다 한 번의 클릭으로 비교 화면을 열 수 있습니다.
마음에 들지 않으면 휴지통에서 원본을 원래 위치로 복원하세요. 이 비상구는 항상 열려 있습니다.
파라미터는 고정되어 있으며 UI에 품질 슬라이더가 없습니다. 이것은 명확한 선택입니다. 파라미터를 조정하려면 양자화 테이블, 인코딩 method, speed 같은 전문 개념을 이해해야 하고, 잘못 조정하면 압축이 무의미하거나 화질이 뭉개집니다. 우리가 그 일을 대신 해두었습니다. 각 형식의 파라미터는 모두 개별적으로 튜닝했으며, 끌어다 놓고 압축을 누르면 해당 형식이 현재 파라미터에서 가장 이상적인 균형점을 얻습니다.
압축 파라미터를 직접 조정하는 데 익숙하더라도 ImgZilla를 먼저 사용해 보시길 권합니다. 이미 튜닝된 파라미터가 시행착오를 줄여줄 수 있을지도 모릅니다.
하지 않는 일들
마찬가지로 중요한 경계를 여기에 적어 둡니다. 다운로드한 뒤에야 알게 되는 일이 없도록 말이죠.
- macOS 전용(12.3 이상). Windows 버전, iOS 버전, 웹 버전은 없습니다.
- 형식을 변환하지 않습니다. JPG는 압축 후에도 JPG이며 WebP가 되지 않습니다.
- 크기를 변경하지 않습니다. 해상도를 줄이거나 자르지 않습니다.
- 항상 더 작아진다고 보장하지 않습니다. 이미 최적화된 이미지는 한 장도 압축되지 않을 수 있으며 그 경우 정직하게 ‘이미 최소화됨’으로 표시합니다.
- EXIF는 기본적으로 제거합니다(GPS 위치 포함, 파일이 더 작아지고 개인정보도 보호됩니다). 촬영 정보, 저작권, 색상 프로필을 유지해야 한다면 설정에서 ‘EXIF 정보 유지’를 수동으로 켜세요.
따로 강조할 것이 하나 더 있습니다. 모든 압축은 Mac 로컬에서 완료됩니다. App Store 구매 검증을 제외하면 ImgZilla는 인터넷 연결이 필요 없고, 이미지는 컴퓨터를 떠나지 않습니다. 대기열도 없고 장수 제한도 없고 ‘누군가의 서버에 업로드’되는 일도 없습니다. 인코더는 모두 앱에 내장된 로컬 정적 라이브러리입니다.
이제 사용을 시작하세요
- 무료 버전: 하루 10장, 날짜가 바뀌면 자동 초기화되며 기능 제한이 없습니다.
- 제한 해제: 평생 버전(1회 구매, 수량 무제한) 또는 월간 구독. 가격은 사용자가 속한 App Store 지역에 따라 표시됩니다. 컴퓨터를 바꾸거나 재설치한 경우 ‘구매 복원’을 누르면 됩니다.
처음 사용할 때 권하는 방법: 별로 중요하지 않은 이미지 하나를 끌어다 놓고 압축한 뒤 ‘비교’를 눌러 화질을 직접 확인한 다음, 전체 폴더를 맡길지 결정하세요.
이것이 우리가 이 도구를 사용해 주기를 바라는 방식이기도 합니다. 먼저 검증하고, 그다음 신뢰하세요.
질문이나 제안이 있으시면 메뉴의 ‘도움말 → 피드백’을 통해 알려주세요. 1.3은 안심하고 사용할 수 있는 버전이지만 분명 마지막 버전은 아닐 것입니다.
ImgZilla 1.3은 현재 Mac App Store에 출시되어 있습니다. macOS 12.3 이상이 필요합니다.