7P by abcdkh1209 8시간전 | ★ favorite | 댓글 4개

왜 만들었나요?

Google의 Squoosh라는 툴을 애용했는데, CLI 버전은 실행하면 오류가 나고 웹 버전은 쓸만했지만... Google 특유의 방치 상태에 결국 직접 만들기로 했습니다. 대체제를 찾아봤는데 마음에 드는 게 없었습니다.

slimg란?

Rust로 작성된 이미지 최적화 CLI입니다. JPEG, WebP, PNG, AVIF, QOI 간 변환과 리사이즈, 품질 최적화를 지원합니다. MozJPEG, OxiPNG, ravif 같은 최신 코덱을 사용합니다.

실제 사용 결과:

개인 사진 54GB를 일괄 최적화했는데 8GB로 줄었습니다. (85% 감소) 품질은 육안으로 거의 차이 못 느끼는 수준입니다.

# 디렉토리 일괄 처리 (병렬)  
slimg convert ./photos --format webp --quality 85 --recursive  
  
# 리사이즈 + 변환  
slimg resize photo.jpg --width 800 --format avif --quality 70  

기술적인 특징:

  • Rayon으로 모든 CPU 코어 병렬 처리
  • 임시 파일 → atomic rename으로 안전한 overwrite
  • 라이브러리(slimg-core)와 CLI 분리 (재사용 가능)
  • C 코덱 바인딩으로 네이티브 성능

설치:

brew install clroot/tap/slimg  
# https://github.com/clroot/slimg/releases  

GitHub: https://github.com/clroot/slimg

slimg 의 코틀린 바인딩이 추가되었습니다. 서버/백엔드에서 이미지 처리를 손쉽게 할 수 있습니다.

저도 압축파일로 묶여있는 이미지를 일괄 변환해주는 툴을 rust로 만들어서 쓰고있는데 이 리포지토리로 내부 호출을 변경해봐야겠습니다
혹시 avif 디코딩이 macos 만 가능한 건 특정한 사유가 있을까요?

이제 0.1.3 버전을 사용하시면 윈도우, 리눅스에서도 avif 디코딩이 가능합니다.

빌드하는데 사용한 github actions 환경에서 avif 를 다루는 라이브러리 버전이 호환되지 않아 그렇습니다. 조만간 빌드환경을 수정하여 리눅스 머신에서도 avif 지원하도록 수정 예정입니다.