프로젝트 소개

truss는 공유된 Rust 코어를 기반으로 구축된 이미지 변환 도구로, 명령줄 인터페이스(CLI), HTTP 서버, 브라우저용 WebAssembly(WASM) 빌드 등 세 가지 주요 인터페이스를 제공합니다. JPEG, PNG, WebP, AVIF, BMP, TIFF, SVG 등 다양한 포맷을 지원하며, GIF는 디코딩 전용 입력으로 사용 가능합니다. 이 도구는 로컬 파일 처리, 서버 측 이미지 처리, 클라이언트 측 브라우저 애플리케이션을 위해 설계되었습니다. 주요 기능으로는 품질 제어가 가능한 포맷 변환, 여러 피트 모드(contain, cover, fill, inside)를 이용한 리사이징, 크롭핑, 회전, 블러링, 샤프닝, 워터마킹, 그레이스케일 변환 등이 있습니다. CLI는 stdin/stdout을 통한 셸 파이프라인을 지원하며, 원격 URL에서 이미지를 가져올 수 있습니다. HTTP 서버는 CDN 또는 리버스 프록시 뒤에 배포 가능하며, 베어러 토큰 인증, 서명된 공개 URL, 선택적 클라우드 스토리지 백엔드(S3, GCS, Azure)를 지원합니다. 보안 기능으로는 내장된 SSRF 보호와 스크립트 및 외부 참조를 제거하는 SVG 위생이 포함되어 있습니다. 브라우저 통합을 위해 truss는 서버 업로드 없이 로컬 이미지 처리를 가능하게 하는 클라이언트 측 전용 npm 패키지(@nao1215/truss-wasm)를 제공합니다. 별도의 TypeScript 패키지(@nao1215/truss-url-signer)는 Node.js 애플리케이션이 서명된 공개 URL을 생성할 수 있도록 합니다. 이 프로젝트는 Linux, macOS, Windows 등 다양한 플랫폼을 지원하며, Homebrew, Cargo, AUR, Docker, 또는 사전 빌드된 바이너리를 통해 설치할 수 있습니다. 메타데이터 처리는 구성 가능하며, EXIF 및 ICC 프로필을 제거, 보존, 또는 선택적으로 유지하는 옵션이 있으며, EXIF 방향 보정은 기본적으로 활성화되어 있습니다.