| Crates.io | compress_comics |
| lib.rs | compress_comics |
| version | 1.1.0 |
| created_at | 2025-07-27 20:15:44.773006+00 |
| updated_at | 2025-08-18 17:33:01.320022+00 |
| description | High-performance comic book compression tool with WebP conversion supporting CBR, CBZ, and PDF formats |
| homepage | https://github.com/erikvullings/compress_comics |
| repository | https://github.com/erikvullings/compress_comics |
| max_upload_size | |
| id | 1770381 |
| size | 95,645 |
A high-performance Rust application for compressing comic book files (CBR/CBZ/PDF) with parallel processing. Converts images to WebP format for optimal file size reduction while maintaining visual quality.
Download the latest release for your platform from GitHub Releases:
compress_comics-x86_64-unknown-linux-gnu.tar.gzcompress_comics-x86_64-pc-windows-msvc.zipcompress_comics-x86_64-apple-darwin.tar.gzcompress_comics-aarch64-apple-darwin.tar.gz# Download and extract (replace URL with latest release)
tar -xzf compress_comics-x86_64-unknown-linux-gnu.tar.gz
chmod +x compress_comics
sudo mv compress_comics /usr/local/bin/ # Optional: add to PATH
.zip file for Windowscompress_comics.exegit clone https://github.com/erikvullings/compress_comics.git
cd compress_comics
cargo build --release
The compiled binary will be available at target/release/compress_comics
cargo install compress_comics
compress_comics comic.cbz --quality 85
compress_comics comic.cbr --quality 85
compress_comics comic.pdf --quality 85
compress_comics
compress_comics /path/to/comics/
# Simple patterns (automatically searches recursively)
compress_comics --glob-pattern "ABC*.cbr" # Files starting with "ABC" anywhere
compress_comics --glob-pattern "*Killer*.cbr" # Files containing "Killer" anywhere
# Explicit recursive patterns
compress_comics --glob-pattern "**/De Killer*.cbr" # Recursive search for "De Killer"
compress_comics --glob-pattern "**/*Volume*/*.cbz" # Complex nested patterns
# Absolute path patterns
compress_comics --glob-pattern "/full/path/**/Killer*.cbr" # Full path search
# Current directory only
compress_comics --glob-pattern "*.pdf" # PDF files in current directory
# Debug your patterns
compress_comics --glob-pattern "pattern" --verbose # Shows found files before processing
compress_comics comics/ --quality 75 --target-height 1600
compress_comics comics/ --rename-original --quality 85
# Result: Original files become *_original.ext, compressed files get clean names
compress_comics comics/ --min-savings 10.0 # Only compress if >10% savings possible
# Files with less potential savings are left unchanged (especially useful for RAR archives)
--quality / -q: WebP quality (1-100, default: 90)
--target-height / -H: Target height for images in pixels (default: 1800)
--max-dimension / -m: Maximum dimension fallback (default: 1200)
--rename-original / -r: Rename original file to <name>_original.<ext> and give compressed file the original name
--glob-pattern / -g: Process only files matching the glob pattern (e.g., "ABC*.cbr", "*.pdf")
--min-savings: Minimum compression savings percentage required to keep compressed file (default: 5.0)
--verbose / -v: Enable detailed output with warnings for debugging (disabled by default for clean output)
Glob patterns use wildcards to match file paths:
* matches any characters within a directory name** matches any number of directories (recursive)? matches a single character[abc] matches any character in bracketsFind files by series name anywhere in directory tree:
compress_comics --glob-pattern "**/De Killer*.cbr"
Find files in specific nested structure:
compress_comics --glob-pattern "**/Striparchief*/**/De Killer*.cbr"
Find files with specific volume numbers:
compress_comics --glob-pattern "**/*Volume 1*.cbr"
compress_comics --glob-pattern "**/*S0[1-3]*.cbr" # Seasons 1-3
Use verbose mode to debug patterns:
compress_comics --glob-pattern "**/Killer*.cbr" --verbose
This shows exactly which files were found before processing.
The tool creates new files with the suffix optimized_webp_q{quality}.cbr:
MyComic.cbz → Output: MyComic optimized_webp_q90.cbrMyComic.cbr → Output: MyComic optimized_webp_q90.cbrMyComic.pdf → Output: MyComic optimized_webp_q90.cbr--rename-original OptionWhen using --rename-original, the compressed file takes the original name:
MyComic.cbz → MyComic_original.cbz (backup) + MyComic.cbr (compressed)MyComic.cbr → MyComic_original.cbr (backup) + MyComic.cbr (compressed)MyComic.pdf → MyComic_original.pdf (backup) + MyComic.cbr (compressed)The tool shows progress similar to Docker image downloads:
🚀 Found 3 comic file(s) to process
Settings: Quality=90, Target Height=1800px
-----------------------------------------------------
⠋ [00:01:23] [████████████████████████████████████████] 2/3 files (00:00:45)
📖 Comic1.cbz [████████████████████████████████] 100%
📖 Comic2.cbz [████████████████░░░░░░░░░░░░░░░░] 65%
📖 Comic3.cbz [████░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 15%
After processing, the tool provides a detailed summary:
📊 Processing Summary:
-----------------------------------------------------
📖 Comic1.cbz: 45.2% savings (23 images processed, 2 skipped)
📖 Comic2.cbz: 38.7% savings (18 images processed, 1 skipped)
🎯 Overall Results:
Total files processed: 2
Total images processed: 41
Total images skipped: 3
Overall size reduction: 42.1%
Original size: 125.43 MB
Compressed size: 72.65 MB
💡 1 file(s) were already well-compressed and showed minimal improvement.
📖 Amber Blake - 01.cbr: 61.1% savings (77.9 MB saved, 104 images processed, 0 skipped)
📖 Auschwitz - 01.cbr: 67.9% savings (74.9 MB saved, 84 images processed, 0 skipped)
Overall size reduction: 64.3% (152.8 MB saved)
Original size: 237.8 MB → Final size: 85.0 MB
📖 Brocéliande - Tome 67.pdf: 76.3% savings (91.1 MB saved, 55 images processed, 0 skipped)
Overall size reduction: 76.3% (91.1 MB saved)
Original size: 119.4 MB → Final size: 28.3 MB
--rename-original Option📖 comic1.cbr: 76.4% savings (84 images processed, 0 skipped)
📖 comic2.pdf: 81.1% savings (55 images processed, 0 skipped)
Before: comic1.cbr (115.75 MB), comic2.pdf (125.21 MB)
After: comic1_original.cbr (backup), comic2_original.pdf (backup)
comic1.cbr (27.35 MB), comic2.cbr (23.71 MB)
Total: 229.80 MB → 48.69 MB (78.8% savings)
The tool provides comprehensive PDF support for comic books:
To build optimized binaries for distribution:
cargo build --release
strip target/release/compress_comics # Optional: reduce binary size
The resulting binary is self-contained and can be distributed without any dependencies.