Crate load_image

Source
Expand description

§Load image as sRGB

Glue code for a few libraries that correctly loads a JPEG, PNG, or (optionally) WebP or AVIF image into memory, taking into accout color profile metadata in PNG chunks, EXIF data and app markers. Converts CMYK to RGB if needed.

cargo add load_image
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let path = std::env::args().nth(1).ok_or("Please provide image file path")?;
    let img = load_image::load_image(path)?;
}

The returned Image is:

struct Image {
    pub width: usize,
    pub height: usize,
    pub bitmap: enum ImageData {
        RGB8(Vec<RGB8>),
        RGBA8(Vec<RGBA8>),
        RGB16(Vec<RGB16>),
        RGBA16(Vec<RGBA16>),
        GRAY8(Vec<GRAY8>),
        GRAY16(Vec<GRAY16>),
        GRAYA8(Vec<GRAYA8>),
        GRAYA16(Vec<GRAYA16>),
    }
}

The bitmap is packed, so x + y * width gives the pixel at x,y (use imgref for convenient manipulation).

The load_image function doesn’t panic, but if you enable the mozjpeg feature, it will depend on unwinding internally, and won’t be compatible with crates compiled with panic = "abort" option.

Modules§

export
Re-export of related crates

Structs§

Image
The pixels are in the Image::bitmap field
ImageMeta
Loader

Enums§

ChunkType
Additional non-image metadata fetched from source files
Error
Format
File type of the image
ImageData
Pixels of the image
Profiles
Rotate

Traits§

FromOptions
Convert ImgVec to an Image by providing metadata

Functions§

load_data
Load image from file data in memory. Use Loader to configure it.
load_path
Load image from file path. Use Loader to configure it.

Type Aliases§

ImageMetaChunks