MozJPEG으로 JPEG 이미지 압축하기
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 자체가 손실압축 포맷인데 무손실로 뭔가를 한다는 것이 어떤 의미가 있는지는 좀 생각해 볼 필요가 있을 것 같다.