sips 사용법: macOS 기본 이미지 처리 도구
macOS를 쓰다 보면 이미지 크기를 줄이거나 포맷을 바꿔야 할 때가 종종 있죠. 스크린샷을 PNG에서 JPEG으로 변환하고 싶거나, 블로그에 올릴 사진의 해상도를 낮추고 싶을 때처럼요. 이럴 때 보통 Preview 앱을 열거나 ImageMagick 같은 도구를 따로 설치하곤 하는데요.
사실 macOS에는 이미 강력한 이미지 처리 도구가 기본으로 탑재되어 있습니다. 바로 sips(Scriptable Image Processing System)인데요. 터미널에서 한 줄이면 이미지를 리사이징하고, 포맷을 변환하고, 회전까지 할 수 있어서 간단한 이미지 작업에는 별도 설치 없이 바로 쓸 수 있습니다. 이번 글에서는 sips의 기본 사용법부터 실전 활용까지 차근차근 살펴보겠습니다.
기본 사용법
macOS에는 sips가 기본으로 설치되어 있어서 터미널을 열고 바로 사용할 수 있습니다. 이미지의 정보를 확인하는 방법부터 알아볼까요.
이미지의 모든 속성을 한눈에 보려면 -g all 옵션을 사용합니다.
sips -g all photo.jpg
/Users/dale/photo.jpg
pixelWidth: 4032
pixelHeight: 3024
typeIdentifier: public.jpeg
format: jpeg
formatOptions: default
dpiWidth: 72.000
dpiHeight: 72.000
samplesPerPixel: 3
bitsPerSample: 8
hasAlpha: no
space: RGB
profile: sRGB IEC61966-2.1
가로 4032px, 세로 3024px의 JPEG 이미지이고 72 DPI, sRGB 색공간을 사용하고 있네요.
특정 속성만 확인하고 싶다면 -g 뒤에 속성 이름을 지정하면 됩니다.
sips -g pixelWidth -g pixelHeight photo.jpg
/Users/dale/photo.jpg
pixelWidth: 4032
pixelHeight: 3024
이미지의 크기만 빠르게 확인할 때 유용합니다.
자주 쓰는 속성 이름을 정리하면 다음과 같습니다.
pixelWidth— 가로 픽셀 수pixelHeight— 세로 픽셀 수format— 이미지 포맷 (jpeg, png, tiff 등)space— 색공간 (RGB, CMYK, Gray 등)hasAlpha— 알파 채널(투명도) 포함 여부profile— ICC 색상 프로파일dpiWidth— 가로 해상도(DPI)dpiHeight— 세로 해상도(DPI)
이미지 리사이징
sips에서 가장 많이 쓰는 기능이 아마 리사이징일 텐데요. 여러 가지 방식으로 이미지 크기를 변경할 수 있습니다.
우선 가로와 세로를 정확한 크기로 지정하려면 -z 옵션을 사용합니다.
주의할 점은 높이(height)를 먼저, 너비(width)를 나중에 지정한다는 것입니다.
sips -z 600 800 photo.jpg
이미지를 정확히 800x600으로 리사이징합니다. 원본 비율과 다르면 이미지가 찌그러질 수 있으므로 주의하세요.
비율을 유지하면서 리사이징하고 싶다면 -Z 옵션을 사용합니다.
대문자 Z를 쓴다는 점에 유의하세요.
sips -Z 1024 photo.jpg
이렇게 하면 가로와 세로 중 긴 쪽이 1024px이 되도록 비율을 유지하면서 축소합니다. 원본이 4032x3024인 경우 1024x768로 리사이징되는 식이죠. 원본보다 큰 값을 지정하면 확대도 됩니다.
가로 너비만 지정해서 리사이징하고 싶다면 --resampleWidth 옵션을 사용합니다.
sips --resampleWidth 1920 photo.jpg
세로 높이는 비율에 맞춰서 자동으로 계산됩니다.
반대로 세로 높이만 지정하려면 --resampleHeight를 사용하면 됩니다.
sips --resampleHeight 1080 photo.jpg
한 가지 주의할 점이 있는데요.
sips는 기본적으로 원본 파일을 직접 수정합니다.
원본을 보존하려면 --out 옵션으로 출력 파일을 따로 지정해야 합니다.
sips -Z 1024 photo.jpg --out photo_resized.jpg
--out에 디렉토리를 지정하면 원본 파일명을 유지한 채 해당 디렉토리에 저장할 수도 있습니다.
mkdir -p resized
sips -Z 1024 photo.jpg --out resized/
포맷 변환
이미지 포맷을 변환할 때는 -s format 옵션을 씁니다.
sips -s format png screenshot.jpg --out screenshot.png
JPEG 파일을 PNG로 변환하는 명령어입니다.
--out으로 변환된 포맷에 맞는 확장자의 출력 파일을 지정하는 게 좋습니다.
sips가 지원하는 주요 포맷은 다음과 같습니다.
jpeg— 사진이나 웹 이미지에 가장 널리 쓰이는 포맷png— 투명도나 무손실 압축이 필요할 때tiff— 인쇄용이나 고품질 이미지 보관용gif— 간단한 애니메이션이나 아이콘bmp— 비압축 비트맵 포맷heic— Apple의 고효율 이미지 포맷 (iPhone 기본)pdf— 이미지를 PDF 문서로 변환icns— macOS 앱 아이콘 포맷
JPEG 품질을 조절하고 싶다면 formatOptions 속성을 함께 설정합니다.
sips -s format jpeg -s formatOptions 80 photo.png --out photo.jpg
formatOptions에 0부터 100 사이의 값을 넣으면 되는데, 보통 80 정도면 품질과 파일 크기의 균형이 좋습니다.
low, normal, high, best 같은 문자열 값도 사용할 수 있어요.
여기서 중요한 제한 사항을 하나 말씀드려야 하는데요. sips는 WebP와 AVIF 포맷을 지원하지 않습니다. 이 포맷으로 변환해야 한다면 libvips나 libwebp 같은 별도의 도구를 사용해야 합니다. sips는 Apple의 Core Image 프레임워크를 기반으로 동작하기 때문에 Apple이 시스템 레벨에서 지원하는 포맷만 다룰 수 있어요.
회전과 뒤집기
이미지를 회전시키려면 -r 옵션에 각도를 지정합니다.
sips -r 90 photo.jpg --out photo_rotated.jpg
시계 방향으로 90도 회전시키는 명령어입니다. 90, 180, 270 같은 직각 단위뿐 아니라 임의의 각도도 지정할 수 있습니다.
이미지를 뒤집으려면 -f 옵션을 사용합니다.
수평으로 뒤집을 때는 horizontal, 수직으로 뒤집을 때는 vertical을 지정합니다.
# 좌우 반전 (수평 뒤집기)
sips -f horizontal photo.jpg --out photo_flipped.jpg
# 상하 반전 (수직 뒤집기)
sips -f vertical photo.jpg --out photo_flipped_v.jpg
회전과 뒤집기를 조합하면 이미지를 원하는 방향으로 맞출 수 있습니다.
메타데이터 다루기
이미지의 메타데이터를 읽고 쓰는 것도 가능합니다.
앞서 -g 옵션으로 속성을 확인하는 방법은 살펴봤는데요.
-s 옵션을 사용하면 속성 값을 직접 설정할 수도 있습니다.
예를 들어 이미지의 DPI를 변경하고 싶다면 이렇게 합니다.
sips -s dpiWidth 300 -s dpiHeight 300 photo.jpg
인쇄용 이미지를 준비할 때 유용합니다. 실제 픽셀 수를 변경하는 게 아니라 메타데이터만 수정하는 것이기 때문에 이미지 품질에는 영향이 없어요.
그리고 -m 옵션을 사용하면 ICC 색상 프로파일을 변경할 수도 있습니다.
sips -m "/System/Library/ColorSync/Profiles/sRGB Profile.icc" photo.jpg
macOS의 /System/Library/ColorSync/Profiles/ 디렉토리에 다양한 ICC 프로파일이 들어 있어요.
일괄 처리
여러 파일을 한 번에 처리할 수 있다는 것도 큰 장점입니다. 파일명을 여러 개 나열하거나 와일드카드를 쓰면 돼요.
sips -Z 1024 *.jpg
현재 디렉토리의 모든 JPEG 파일을 1024px 이하로 리사이징하는 명령어입니다. 단, 이 경우 원본 파일이 직접 수정되므로 주의해야 합니다.
원본을 보존하면서 일괄 처리하려면 --out에 디렉토리를 지정합니다.
mkdir -p resized
sips -Z 1024 *.jpg --out resized/
이렇게 하면 리사이징된 파일이 resized/ 디렉토리에 원본 파일명 그대로 저장됩니다.
포맷 변환도 일괄로 할 수 있습니다.
mkdir -p converted
sips -s format png *.jpg --out converted/
모든 JPEG 파일을 PNG로 변환해서 converted/ 디렉토리에 저장하는 명령어입니다.
좀 더 복잡한 일괄 처리가 필요하다면 셸 스크립트의 반복문과 함께 쓸 수 있습니다.
for f in *.jpg; do
sips -Z 800 "$f" --out "${f%.jpg}_thumb.jpg"
done
각 JPEG 파일을 800px로 축소하면서 파일명 끝에 _thumb을 붙여서 저장합니다.
실전 활용 예제
실제로 자주 마주치는 시나리오별로 유용한 명령어를 정리해보겠습니다.
웹사이트에 올릴 이미지를 준비할 때는 보통 가로 너비를 제한하고 JPEG으로 변환하면서 품질을 조절합니다.
sips --resampleWidth 1920 -s format jpeg -s formatOptions 85 photo.png --out photo_web.jpg
iPhone으로 찍은 HEIC 사진을 JPEG으로 변환해야 할 때가 많은데요. sips를 사용하면 간단합니다.
mkdir -p jpeg_photos
sips -s format jpeg *.HEIC --out jpeg_photos/
블로그나 문서에 넣을 반응형 이미지를 준비할 때는 여러 크기의 이미지를 한꺼번에 생성하면 편리합니다.
for size in 320 640 960 1280; do
sips -Z $size photo.jpg --out "photo_${size}.jpg"
done
마치며
별도 설치 없이 바로 쓸 수 있다는 게 sips의 가장 큰 매력입니다. 리사이징, 포맷 변환, 회전, 메타데이터 수정 같은 기본적인 이미지 작업을 터미널에서 빠르게 해결할 수 있죠. 특히 셸 스크립트와 조합하면 일괄 처리까지 손쉽게 자동화할 수 있어서, macOS에서 간단한 이미지 작업이 필요할 때 먼저 떠올리면 좋은 도구입니다.
다만 WebP나 AVIF 같은 최신 웹 포맷을 지원하지 않고, 이미지 처리 성능이 전문 도구에 비해 떨어진다는 한계도 있습니다. 대량의 이미지를 고성능으로 처리하거나 다양한 포맷을 다뤄야 한다면 libvips CLI 사용법을 참고해보세요. Node.js 환경에서 이미지를 처리해야 한다면 Sharp 사용법도 좋은 선택지입니다.
더 자세한 내용은 터미널에서 man sips를 실행하거나 Apple 공식 문서를 참고하세요.
This work is licensed under
CC BY 4.0