지난주에 폴더 하나가 도착했습니다. 상품 이미지 312장이고, 크기는 800×800부터 5472×3648까지 제각각이며 JPG와 PNG, 그리고 HEIC 몇 장이 섞여 있었습니다. 마켓의 요구 조건은 1600×1600 JPG, 2MB 이하였습니다. 같은 종류의 다른 버전으로 블로그 이전 작업이 있습니다. PNG 일러스트 200여 장을 WebP로 변환하면서 가로 폭을 1600 이하로 제한하는 일입니다. 서로 다른 작업처럼 보이지만 쓰는 파이프라인은 같습니다.
작업을 나누면 화질이 떨어지는 이유
직관적인 방법은 도구를 세 번 연달아 쓰는 것입니다. 크기를 조절해 내려받고, 포맷을 바꿔 내려받고, 압축해서 다시 내려받는 식입니다. 각 도구가 일괄 처리를 지원하긴 해도, 단계가 끝날 때마다 파일이 다시 인코딩됩니다. JPG는 손실 압축이라 인코딩할 때마다 정보가 조금씩 버려지고, 세 번을 거치고 나면 확대해 봤을 때 가장자리에 블록 현상과 번짐이 눈에 띕니다.
올바른 방법은 인코딩을 맨 마지막에 딱 한 번만 하는 것입니다. 이미지를 비트맵으로 디코딩한 뒤 크기 조절, 자르기, 포맷 변환을 모두 메모리에서 처리하고, 마지막 단계에서만 목표 포맷과 품질로 파일을 씁니다. 이미지 일괄 처리가 바로 이렇게 만들어져 있습니다. 여섯 단계가 정해진 순서로 이어지며, 그 사이에 화질이 손상되는 과정은 없습니다.

시나리오 1: 오픈마켓용 상품 이미지 300장
목표는 1600×1600, JPG, 2MB 이하, 오른쪽 아래에 상점 이름 넣기입니다. 단계별로 설정합니다.
- 크기: '1600×1600 채움'을 선택합니다. 가로로 긴 이미지와 세로로 긴 이미지는 먼저 이 틀을 딱 덮을 만큼 줄어듭니다.
- 비율로 자르기: 1:1. 정사각형을 벗어나는 부분은 가운데를 기준으로 잘려 나가므로, 피사체가 가운데 있는 상품 사진은 영향을 받지 않습니다.
- 워터마크: 켜고, 텍스트에 상점 이름을 넣고, 위치는 오른쪽 아래, 크기 4%, 불투명도 50%로 설정합니다.
- 출력: JPG, 품질 85%. 파일 이름은 '이름-001 형식으로 변경'을 고르고, 접두어에는 SKU나 카테고리명을 넣습니다.
보통 노트북에서 312장이 3~4분이면 끝납니다. 결과는 200~600KB 사이로, 2MB 상한보다 훨씬 작습니다. HEIC 원본도 바로 읽히므로 먼저 변환할 필요가 없습니다. 내려받은 ZIP에는 파일 이름이 깔끔하게 순번으로 정리되어 있어, 관리자 페이지에 올리기 전에 이름을 고칠 일도 없습니다.
일부 상품 사진은 피사체가 한쪽으로 크게 치우쳐 있어서 중앙 기준 자르기를 하면 잘려 나갑니다. 그런 이미지는 따로 골라 이미지 자르기에서 직접 영역을 잡아 준 뒤 파이프라인에 따로 돌리세요. 한 묶음에서 이런 이미지는 대개 10장 중 한 장도 안 됩니다.
시나리오 2: 블로그 갤러리를 WebP로 옮기기
목표는 모든 일러스트를 WebP로 바꾸고, 가로 폭을 1600 이하로 제한하며, 스크린샷은 선명하게 유지하는 것입니다. 첫 번째 시나리오보다 설정이 간단합니다.
- 크기: '가로 1600'을 선택하고 '확대 허용'은 끕니다. 이미 1600보다 좁은 이미지는 그대로 둡니다.
- 출력: WebP, 품질 80%.
- 파일 이름: 원래 이름을 유지합니다. 그러면 글 안의 이미지 경로는 확장자만 .png에서 .webp로 바꾸면 됩니다.
PNG 200장을 이렇게 변환하면 보통 용량이 70% 넘게 줄어듭니다. 주의할 것은 투명 배경이 있는 로고와 아이콘뿐입니다. WebP는 투명도를 지원하고 파이프라인도 알파 채널을 유지하므로 문제없습니다. 다만 출력 포맷을 JPG로 하면 투명 영역이 흰색으로 채워지므로, 그런 파일은 PNG로 남겨 두어야 합니다.
변환이 끝나면 결과물 두 장을 이미지 변환기에 넣어 오래된 브라우저에서 어떻게 보이는지 확인해 보세요. 수고는 적게 들고 마음은 훨씬 편해집니다.
'채움', '맞춤', '긴 변' 중 무엇을 고를까
크기 조절 방식은 사람들이 가장 자주 잘못 고르는 항목입니다. 자주 쓰는 세 가지 모드는 각각 쓰임새가 다릅니다.
- 긴 변: 이미지가 너무 크지만 않으면 되고 비율은 상관없을 때. 블로그 이미지나 공유 앨범에 알맞습니다.
- 가로×세로 안에 맞춤: 자르지 않고 이미지 전체를 틀 안에 넣어야 할 때. 한쪽 변은 모자랄 수 있습니다. 썸네일과 슬라이드에 알맞습니다.
- 가로×세로 채움: 틀을 빈틈없이 덮고 넘치는 부분은 잘라 낼 때. 오픈마켓 대표 이미지, 프로필 사진, 비율이 고정된 카드형 이미지에 쓰며, 보통 '비율로 자르기'와 짝을 이룹니다.
간단한 기준이 있습니다. 플랫폼이 "N픽셀 이하"라고 하면 긴 변이나 맞춤을, "정확히 W×H여야 함"이라고 하면 채움을 쓰세요.
실행 전 두 가지 점검
첫째, 실시간 미리보기를 확인하세요. 파이프라인은 첫 번째 이미지에 현재 설정을 모두 적용해 보여 줍니다. 워터마크 위치, 자르기에서 피사체가 잘리지 않았는지, 색이 변하지 않았는지를 한눈에 알 수 있습니다. 확인했다면 '모두 처리'를 누르세요. 300장을 다 돌린 뒤에야 상점 이름이 상품 위에 찍혔다는 걸 알게 되는 일은 없어야 합니다.
둘째, 원본을 보관하세요. 파이프라인은 원본 파일을 절대 수정하지 않지만, 다시 인코딩된 결과물에는 EXIF와 촬영 정보가 남지 않습니다. ZIP을 내려받기 전에 원본이 다른 곳에 저장되어 있는지 확인하세요. 위치 정보를 지워야 하는 사진이라면 오히려 반가운 동작입니다. 자세한 내용은 EXIF 메타데이터란 무엇이며 왜 제거할까를 참고하세요.
이미지 일괄 크기 조절과 변환은 한 문장으로 정리됩니다. 한 번 설정하고, 전체를 돌리고, 중간에 디스크에 저장하지 않는다. 나머지는 세 가지 크기 조절 모드와 두 가지 출력 포맷 중에서 고르는 선택일 뿐입니다.
