Expand description
Overview
This crate provides native rust implementations of image encoding and decoding as well as some basic image manipulation functions. Additional documentation can currently also be found in the README.md file which is most easily viewed on github.
There are two core problems for which this library provides solutions: a unified interface for image encodings and simple generic buffers for their content. It’s possible to use either feature without the other. The focus is on a small and stable set of common operations that can be supplemented by other specialized crates. The library also prefers safe solutions with few dependencies.
High level API
Load images using io::Reader
:
use image::io::Reader as ImageReader;
let img = ImageReader::open("myimage.png")?.decode()?;
let img2 = ImageReader::new(Cursor::new(bytes)).decode()?;
And save them using save
or write_to
methods:
img.save("empty.jpg")?;
let mut bytes: Vec<u8> = Vec::new();
img2.write_to(&mut bytes, image::ImageOutputFormat::Png)?;
With default features, the crate includes support for many common image formats.
Image buffers
The two main types for storing images:
ImageBuffer
which holds statically typed image contents.DynamicImage
which is an enum over the supported ImageBuffer formats and supports conversions between them.
As well as a few more specialized options:
GenericImage
trait for a mutable image buffer.GenericImageView
trait for read only references to a GenericImage.flat
module containing types for interoperability with generic channel matrices and foreign interfaces.
Low level encoding/decoding API
The ImageDecoder
and ImageDecoderExt
traits are implemented for many image file
formats. They decode image data by directly on raw byte slices. Given an ImageDecoder, you can
produce a DynamicImage via DynamicImage::from_decoder
.
ImageEncoder
provides the analogous functionality for encoding image data.
Re-exports
pub use crate::error::ImageError;
pub use crate::error::ImageResult;
pub use crate::flat::FlatSamples;
Modules
ImageBuffer
type.