Skip to content

About

Caesium Command Line Tools - Lossy/lossless image compression tool

Topics

Resources

Stars

570 stars

Watchers

17 watching

Forks

Latest commit

 

History

254 Commits

Folders and files

Repository files navigation

Caesium Command Line Tools

Test Clippy Code formatting

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.

demo

✨ Features

  • Multiple Compression Modes

    • 🔍 Quality-based lossy compression
    • 💎 Lossless compression—preserve image quality while reducing size
    • 📏 Maximum size compression - target specific file sizes
  • Advanced Image Processing

    • 📐 Resize images with multiple options (width, height, long/short edge)
    • 🔄 Convert between formats (JPEG, PNG, WebP)
    • 🏷️ EXIF metadata preservation
  • Workflow Optimization

    • *️⃣ Recursive directory compression
    • 📁 Folder structure preservation
    • 🕒 File timestamp preservation
    • 📝 Custom suffix for output files
    • ⚡ Fast and customizable multithreaded processing

Supported Formats

Format Lossy Lossless
JPEG ✅ ✅
PNG ✅ ✅
WebP ✅ ✅
GIF ✅ ❌

🚀 Getting Started

Binaries

Download the latest binaries from the release page.

Supported platforms:

  • Windows (x86_64)
  • macOS (x86_64/aarch64)
  • Linux (x86_64/aarch64)

Installation

Cargo

cargo install caesiumclt

Homebrew

brew install caesiumclt

Winget

winget install SaeraSoft.CaesiumCLT

🛠️ Development

Requirements

Quick Start

  1. Clone the repository:

    git clone https://github.com/Lymphatus/caesium-clt.git
    cd caesium-clt
  2. Build the project:

    cargo build
  3. Build for release (optimized):

    cargo build --release
  4. Run the tool directly:

    cargo run -- [your-arguments-here]
  5. Run tests:

    cargo test

📖 Usage

For a complete list of all flags and options, refer to the full documentation.

Examples

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

About

Caesium Command Line Tools - Lossy/lossless image compression tool

Topics

Resources

Stars

570 stars

Watchers

17 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages