Cn Web Image Optimizer

Compress images for web usage. Smart quality reduction + resize to fit under 500KB. Supports JPEG, PNG, WebP, BMP, TIFF input. Auto WebP output for best compression.

Audits

Pass

Install

openclaw skills install cn-web-image-optimizer

Web Image Optimizer

Smart image compression for web usage. Automatically reduces file size to under 500KB while preserving visual quality.

Features

FeatureDescription
Smart CompressionProgressive quality reduction until target size is met
Auto ResizeIf quality reduction alone is insufficient, proportionally resizes the image
Multi-Format InputJPEG, PNG, WebP, BMP, TIFF, GIF
WebP PreferredAuto WebP output (best compression for web)
JPEG FallbackJPEG output option for maximum compatibility
Batch ProcessingCompress all images in a directory at once
Recursive ScanSearch subdirectories recursively
Size TargetConfigurable max file size (default: 500KB)

Usage

Single Image Compression

# Compress to WebP (auto, under 500KB)
python scripts/web_image_optimizer.py compress photo.jpg

# Compress to JPEG, max 300KB
python scripts/web_image_optimizer.py compress photo.jpg --format jpeg --max-kb 300

# Compress to PNG
python scripts/web_image_optimizer.py compress photo.png --format png

# Custom output path
python scripts/web_image_optimizer.py compress photo.jpg -o /path/to/output.webp

Batch Processing

# Compress all images in a directory
python scripts/web_image_optimizer.py batch ./images/

# Batch with custom format and size limit
python scripts/web_image_optimizer.py batch ./photos/ --format jpeg --max-kb 200

# Recursive subdirectory scan
python scripts/web_image_optimizer.py batch ./content/ --recursive

Image Info

python scripts/web_image_optimizer.py info photo.jpg

Compression Strategy

The optimizer uses a multi-step approach:

  1. Format Conversion: PNG input is converted to WebP (typically 70-90% smaller)
  2. Quality Reduction: Progressive quality adjustment (85 -> 75 -> 65 -> ...)
  3. Smart Resize: If quality alone cannot meet target, proportionally resize the image
  4. Final Fallback: Save at minimum quality if target cannot be met

Output Format Guide

FormatCompressionQualityBrowser SupportRecommendation
WebPBestExcellent96%+Default choice
JPEGGoodGood100%Maximum compatibility
PNGLimitedLossless100%Transparency needed

Example Output

  hero-banner.png
    2682.6 KB  -->     41.0 KB  (+98.5%)
    Format: WEBP  Quality: 85  Size: 1280x714
    Output: ./hero-banner_web.webp

Dependencies

  • Python 3.6+
  • Pillow (PIL) - Standard Python imaging library

Install Pillow if needed:

pip3 install Pillow

Options

OptionShortDefaultDescription
--max-kb-m500Maximum output file size in KB
--format-fautoOutput format: auto/webp/jpeg/png
--quality-q85Starting quality (1-100)
--output-oautoOutput file path
--recursive-rfalseScan subdirectories (batch mode)

Security Notes

  • Pure local processing, no network calls
  • No image data leaves your machine
  • Preserves EXIF metadata is NOT done (metadata stripped for smaller size)
  • No file deletion - original files are preserved

Exit Codes

CodeMeaning
0Success
1Error (file not found, unsupported format, etc.)