MozJPEG으로 JPEG 이미지 압축하기

CLI, ImageMagick // 2024년 05월 31일 작성 // 2024년 12월 30일 업데이트

JPEG 이미지 압축 관련 도구 모음인 MozJPEG 사용 방법을 간단히 알아보자. 이 글은 macOS를 기준으로 정리되었다.

MozJPEG 설치하기

macOS에서는 역시나 Homebrew를 통해 MozJPEG을 쉽게 설치할 수 있다.

brew install mozjpeg

설치 후 mozjpeg 이라는 바이너리가 없어서 헤멜 수도 있는데, 실제로 설치되는 바이너리 이름은 cjpeg, djpeg, jpegtran 등등 다양하다.

기본 사용법

기본적으로 아래와 같은 사용 방법을 찾을 수 있다.

cjpeg -quality 75 input.jpg > output.jpg

이렇게 실행하면 75% 압축률로 input.jpg 파일이 output.jpg로 압축이 잘 되...지는 않고 개인적으로는 아래와 같은 오류가 발생하며 비정상 종료되어 버렸다.

Unrecognized input file format --- perhaps you need -targa

cjpeg이 타입을 인식하지 못 하는 것으로 추정되는데 메시지와 같은 옵션을 추가해도 해결이 안 되었다.

어쨌든 글 내용이 좀 이상해졌는데 이제 본론으로 들어가보자.

조금 복잡하지만 어쨌든 되는 방법

MozJPEG을 통해 같이 설치되는 djpeg을 이용하면 JPEG 이미지의 압축을 해제할 수 있으니 위처럼 파일 타입을 인식하지 못 하는 경우 이걸 같이 사용할 수 있다.

djpeg input.jpg | cjpeg -quality 75 > output.jpg

이렇게 하면 input.jpg 파일을 75% 수준으로 압축된 output.jpg 파일을 얻을 수 있다.

프로그레시브 압축

조금 더 욕심을 내고자 한다면 아래처럼 프로그레시브하게 최적화를 거치는 방법도 있다.

djpeg input.jpg | cjpeg -quality 75 -progressive -optimize > output.jpg

이 경우 압축 효율이 좀 더 좋아지며 점진적 로딩이 되는 프로그레시브 이미지를 얻을 수 있다. 물론 압축 효율이 높다는 말은 처리에 시간이 걸린다는 말이기에 많은 이미지를 한 번에 압축하기엔 좀 부담될 수도 있다.

사족

이 글에서는 손실(lossy) 압축을 하는 cjpeg이라는 도구를 다뤘는데, 만약 무손실 압축을 원한다면 jpegtran의 사용을 고려해보자. 옵션 등 사용 방법은 비슷하다. 단지, 애초에 JPEG 자체가 손실압축 포맷인데 무손실로 뭔가를 한다는 것이 어떤 의미가 있는지는 좀 생각해 볼 필요가 있을 것 같다.

관련된 글들