Crates.io | caesiumclt |
lib.rs | caesiumclt |
version | 1.0.1 |
created_at | 2025-08-26 19:49:56.023806+00 |
updated_at | 2025-09-01 18:32:11.557642+00 |
description | A fast and efficient lossy and/or lossless image compression tool |
homepage | https://github.com/Lymphatus/caesium-clt |
repository | https://github.com/Lymphatus/caesium-clt |
max_upload_size | |
id | 1811819 |
size | 142,063 |
caesiumclt is a powerful command-line tool for image compression written in Rust that delivers exceptional results with minimal effort. Whether you need pixel-perfect lossless compression or aggressive size reduction, caesiumclt has you covered.
Built on the robust libcaesium engine, it combines high performance with flexibility to fit seamlessly into your workflow.
Multiple Compression Modes
Advanced Image Processing
Workflow Optimization
Format | Lossy | Lossless |
---|---|---|
JPEG | β | β |
PNG | β | β |
WebP | β | β |
Download the latest binaries from the release page.
Supported platforms:
cargo install caesiumclt
brew install caesiumclt
Clone the repository:
git clone https://github.com/Lymphatus/caesium-clt.git
cd caesium-clt
Build the project:
cargo build
Build for release (optimized):
cargo build --release
Run the tool directly:
cargo run -- [your-arguments-here]
Run tests:
cargo test
For a complete list of all flags and options, refer to the full documentation.
Lossless compression:
# Compress a single image
$ caesiumclt --lossless -o output/ image.jpg
# Compress with metadata preservation
$ caesiumclt --lossless -e --keep-dates -o output/ image.jpg
# Compress a directory recursively
$ caesiumclt --lossless -R -o output/ Pictures
# Preserve folder structure
$ caesiumclt --lossless -RS -o output/ Pictures
Lossy compression:
# Compress with quality setting
$ caesiumclt -q 80 -o output/ image.jpg
# Compress multiple images with a specific quality
$ caesiumclt -q 75 -o output/ image1.jpg image2.png image3.webp
# Compress with suffix to avoid overwriting originals
$ caesiumclt -q 85 --suffix _compressed --same-folder-as-input image.jpg
Format conversion:
# Convert images to WebP format with quality setting
$ caesiumclt -q 85 --format webp -o output/ Pictures/*.jpg
# Convert PNG to JPEG with maximum quality
$ caesiumclt -q 100 --format jpeg -o output/ image.png
Resizing options:
# Resize to specific width (maintaining aspect ratio)
$ caesiumclt --lossless --width 1920 -o output/ image.jpg
# Resize to specific height (maintaining aspect ratio)
$ caesiumclt -q 90 --height 1080 -o output/ image.jpg
# Resize by longest edge (useful for mixed portrait/landscape photos)
$ caesiumclt -q 85 --long-edge 1500 -o output/ Pictures/*.jpg
# Resize by shortest edge
$ caesiumclt -q 85 --short-edge 800 -o output/ Pictures/*.jpg
Advanced options:
# Target a specific maximum file size (500KB)
$ caesiumclt --max-size 512000 -o output/ large-image.jpg
# Parallel processing with specific thread count
$ caesiumclt -q 80 --threads 4 -R -o output/ Pictures/
# Dry run to test compression without writing files
$ caesiumclt -q 80 --dry-run -o output/ Pictures/
# PNG optimization with highest compression level
$ caesiumclt --lossless --png-opt-level 6 -o output/ image.png
# JPEG advanced options with specific chroma subsampling
$ caesiumclt -q 85 --jpeg-chroma-subsampling "4:2:0" --jpeg-baseline -o output/ image.jpg
Overwrite policies:
# Never overwrite existing files
$ caesiumclt -q 85 -O never -o output/ Pictures/*.jpg
# Overwrite only if the existing file is bigger
$ caesiumclt -q 85 -O bigger -o output/ Pictures/*.jpg