image-optimizer 1.3.0

CLI tool for optimizing images (JPEG, PNG, WebP)
Documentation

Image Optimizer

A fast, parallel CLI tool for optimizing images (JPEG, PNG, WebP) written in Rust.

Features

  • Multiple formats: Supports JPEG, PNG, and WebP optimization
  • High-quality compression: Uses mozjpeg, oxipng with zopfli, and WebP encoders
  • Parallel processing: Optimizes multiple images concurrently for speed
  • Flexible output: In-place optimization or separate output directory
  • Image resizing: Optional resizing with --max-size parameter
  • Backup support: Create backup files before optimization
  • Quality control: Adjustable quality (1-100) or lossless compression
  • Progress tracking: Real-time progress bar with file-by-file status

Installation

From crates.io (Recommended)

cargo install image-optimizer

Quick Install (Linux/macOS)

curl -sSL https://raw.githubusercontent.com/nixuuu/image-optimizer/refs/heads/master/install.sh | bash

This script will:

  • Detect your platform and architecture
  • Download prebuilt binaries (if available) or build from source
  • Install to ~/.local/bin and configure your PATH

Manual Installation

System Dependencies

This tool requires system libraries for JPEG optimization:

Ubuntu/Debian:

sudo apt-get install libjpeg-dev

macOS:

brew install mozjpeg

Fedora/RHEL:

sudo dnf install libjpeg-turbo-devel

Build from Source

git clone https://github.com/nixuuu/image-optimizer.git
cd image-optimizer
cargo build --release

Usage

# Basic usage - optimize images in place
image-optimizer -i ./images -r

# Optimize to output directory with custom quality
image-optimizer -i input_dir -o output_dir --quality 90

# Create backups and use lossless compression
image-optimizer -i images --backup --lossless

# Resize images to max 1920px on longer edge
image-optimizer -i photos --max-size 1920

# Update to the latest version
image-optimizer --update

Options

  • -i, --input <PATH> - Input directory to scan for images
  • -o, --output <PATH> - Output directory (optional, defaults to in-place)
  • --backup - Create backup files (.bak extension)
  • --lossless - Use lossless compression
  • -q, --quality <1-100> - JPEG quality (default: 85, ignored if lossless)
  • -r, --recursive - Recursively scan subdirectories
  • --max-size <PIXELS> - Maximum size for longer edge (resizes if larger)
  • --update - Update to the latest version from GitHub releases

Supported Formats

  • JPEG (.jpg, .jpeg) - Optimized with mozjpeg
  • PNG (.png) - Optimized with oxipng and zopfli compression
  • WebP (.webp) - Optimized with WebP encoder

Performance

The tool uses parallel processing to optimize multiple images simultaneously, making it efficient for batch operations on large image collections.