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.
Load images using
use image::io::Reader as ImageReader; let img = ImageReader::open("myimage.png")?.decode()?; let img2 = ImageReader::new(Cursor::new(bytes)).decode()?;
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.
The two main types for storing images:
ImageBufferwhich holds statically typed image contents.
DynamicImagewhich is an enum over the supported ImageBuffer formats and supports conversions between them.
As well as a few more specialized options:
GenericImagetrait for a mutable image buffer.
GenericImageViewtrait for read only references to a GenericImage.
flatmodule containing types for interoperability with generic channel matrices and foreign interfaces.
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
ImageEncoder provides the analogous functionality for encoding image data.
Decoding and Encoding of BMP Images
Iterators and other auxiliary structure for the
Encoding and decoding for various image file formats.
Decoding of DDS images
Decoding of DXT (S3TC) compression
Contains detailed error representation.
Decoding of farbfeld images
Image representations for ffi.
Decoding of GIF Images
Decoding of Radiance HDR Images
Decoding and Encoding of ICO files
Image Processing Functions
Input and output of images.
Decoding and Encoding of JPEG Images
Mathematical helper functions and types.
Decoding and Encoding of PNG Images
Decoding and Encoding of netpbm image formats (pbm, pgm, ppm and pam)
Decoding and Encoding of TGA Images
Decoding and Encoding of TIFF Images
Decoding of WebP Images
BGR colors + alpha channel
The delay of a frame relative to the previous one.
A single animation frame
An implementation dependent iterator, reading the frames as requested
Generic image buffer
Grayscale colors + alpha channel
Immutable pixel iterator
Represents the progress of an image operation.
RGB colors + alpha channel
A View into another image
An enumeration over supported color types and bit depths
A Dynamic Image
An enumeration of color types encountered in image formats.
An enumeration of supported image formats. Not all formats support both encoding and decoding.
An enumeration of supported image formats for encoding.
Types which are safe to treat as an immutable byte slice in a pixel layout for image encoding.
A trait for manipulating images.
Trait to inspect an image.
The trait that all decoders implement
Specialized image decoding not be supported by all formats
The trait all encoders implement
A generalized pixel.
Primitive trait from old stdlib
Guess image format from memory block
Read the dimensions of the image located at the specified path. This is faster than fully loading the image and then getting its dimensions.
Create a new image from a Reader
Create a new image from a byte slice
Create a new image from a byte slice
Open the image located at the path specified. The image's format is determined from the path's file extension.
Saves the supplied buffer to a file at the path specified.
Saves the supplied buffer to a file at the path specified in the specified format.
Sendable grayscale + alpha channel image buffer
Sendable grayscale image buffer
Sendable Rgb image buffer
Sendable Rgb + alpha channel image buffer