Expand description
Image processing — pure Rust, zero external dependencies.
This module handles all image manipulation in Simple Gal: reading dimensions,
extracting IPTC metadata, generating responsive sizes, and creating thumbnails.
Everything uses pure Rust crates (image, rav1e) — no ImageMagick, no FFmpeg,
no system libraries. This is a deliberate choice: the binary is fully self-contained,
so it works on any machine without installing prerequisites.
§Operation Table
| Operation | Implementation |
|---|---|
| Identify (dimensions) | image::image_dimensions |
| IPTC metadata | Custom parser (iptc_parser) — reads JPEG APP13 + TIFF IFD |
| Resize → AVIF | Lanczos3 resampling + rav1e AVIF encoder |
| Thumbnail | resize_to_fill (center crop) + optional unsharpen |
§Architecture: Backend Trait Pattern
The module separates what to do from how to do it using the ImageBackend trait:
calculations— Pure functions for dimension math (aspect ratios, responsive sizes). Fully unit-testable with no I/O.params— Data structs (ResizeParams,ThumbnailParams) describing operations.backend— TheImageBackendtrait defining identify/resize/thumbnail. Includes aMockBackend(behind#[cfg(test)]) for fast, deterministic tests.rust_backend—RustBackend, the production implementation usingimage+rav1e.operations— High-level functions (create_responsive_images,create_thumbnail) that combine calculations + backend. Accept&dyn ImageBackendfor testability.
Re-exports§
pub use backend::BackendError;pub use backend::ImageBackend;pub use calculations::calculate_thumbnail_dimensions;pub use operations::ResponsiveConfig;pub use operations::ThumbnailConfig;pub use operations::create_responsive_images;pub use operations::create_thumbnail;pub use operations::get_dimensions;pub use params::Quality;pub use params::Sharpening;pub use rust_backend::RustBackend;pub use rust_backend::supported_input_extensions;
Modules§
- backend
- Image processing backend trait and shared types.
- calculations
- Pure calculation functions for image dimensions.
- operations
- High-level image operations.
- params
- Parameter types for image operations.
- rust_
backend - Pure Rust image processing backend — zero external dependencies.