MoosicBox Image Helper
A command-line image processing tool for resizing, converting, and optimizing images with support for multiple formats.
Overview
The Image Helper (image_helper) is a utility for image processing operations including:
- Image Resizing: Resize images while maintaining aspect ratio
- Format Conversion: Convert between multiple image formats
- Quality Control: Configurable compression quality settings
- Smart Resizing: Automatic aspect ratio calculation
- Batch Processing: Process multiple images efficiently
- libvips Integration: High-performance image processing (when available)
Installation
From Source
Dependencies
System dependencies for optimal performance:
- libvips (recommended, for high-performance processing)
- Ubuntu/Debian:
sudo apt-get install libvips-dev - macOS:
brew install vips - Windows: See libvips Windows installation
- Ubuntu/Debian:
Usage
Basic Usage
Resize an image to specific dimensions:
Maintain Aspect Ratio
Resize by width only (height calculated automatically):
Resize by height only (width calculated automatically):
Format Conversion
Convert between formats:
Quality Control
Set compression quality (0-100):
Complete Example
Command Line Options
| Option | Short | Description | Default |
|---|---|---|---|
--width |
-w |
Target width in pixels | Auto-calculated |
--height |
-h |
Target height in pixels | Auto-calculated |
--encoding |
-e |
Output format (JPEG, PNG, WEBP) | Auto-detect from extension |
--output |
-o |
Output file path | Required |
--quality |
-q |
Compression quality (0-100) | 80 |
Supported Formats
Input Formats
- JPEG (.jpg, .jpeg)
- PNG (.png)
- WebP (.webp)
- TIFF (.tiff, .tif)
- BMP (.bmp)
- GIF (.gif) - static images only
- ICO (.ico)
Output Formats
- JPEG (.jpg, .jpeg) - Good compression, lossy
- PNG (.png) - Lossless, supports transparency
- WebP (.webp) - Modern format, excellent compression
Aspect Ratio Handling
The tool intelligently handles aspect ratios:
Both Dimensions Specified
# Resize to exact dimensions (may distort image)
Width Only
# Height calculated to maintain aspect ratio
Height Only
# Width calculated to maintain aspect ratio
Neither Dimension
# Original dimensions preserved, format/quality change only
Quality Guidelines
JPEG Quality Settings
- 60-70: Good for web thumbnails, small file size
- 75-85: Good balance of quality and file size
- 85-95: High quality for photos
- 95-100: Maximum quality, larger files
WebP Quality Settings
- 50-70: Excellent compression for web use
- 70-85: High quality with good compression
- 85-100: Maximum quality
PNG
- PNG is lossless, quality setting affects compression level
- Higher quality = better compression but slower processing
Examples
Create web thumbnails
# Create small thumbnail
# Create medium preview
Convert to modern formats
# Convert PNG to WebP for better compression
# Convert old JPEG to high-quality WebP
Batch processing script
#!/bin/bash
for; do
done
Album artwork optimization
# Standard album cover size
# High-res album cover
Performance
libvips vs Image Crate
- libvips: Faster processing, better memory usage, more formats
- image crate: Pure Rust, easier deployment, fewer dependencies
Memory Usage
- Optimized for large images with streaming processing
- Automatically handles memory management for batch operations
Processing Speed
- Multi-threaded processing where supported
- Efficient algorithms for common operations like resizing
Error Handling
Common errors and solutions:
- Unsupported format: Check input file format is supported
- Permission denied: Verify read/write permissions for files
- Out of memory: Reduce image size or enable libvips for better memory usage
- Invalid dimensions: Ensure width/height values are positive integers
Integration
The image helper is used by other MoosicBox components:
- Server: Automatic album artwork optimization
- Web Interface: Dynamic image resizing for different screen sizes
- Mobile App: Thumbnail generation for better performance
See Also
- MoosicBox Server - Uses image processing for album artwork
- MoosicBox Files - File handling utilities
- libvips Documentation - High-performance image processing library