Skip to main content

Module imaging

Module imaging 

Source
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

OperationImplementation
Identify (dimensions)image::image_dimensions
IPTC metadataCustom parser (iptc_parser) — reads JPEG APP13 + TIFF IFD
Resize → AVIFLanczos3 resampling + rav1e AVIF encoder
Thumbnailresize_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 — The ImageBackend trait defining identify/resize/thumbnail. Includes a MockBackend (behind #[cfg(test)]) for fast, deterministic tests.
  • rust_backendRustBackend, the production implementation using image + rav1e.
  • operations — High-level functions (create_responsive_images, create_thumbnail) that combine calculations + backend. Accept &dyn ImageBackend for 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.