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 ImageReader
:
use std::io::Cursor;
use image::ImageReader;
let img = ImageReader::open("myimage.png")?.decode()?;
let img2 = ImageReader::new(Cursor::new(bytes)).with_guessed_format()?.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 Cursor::new(&mut bytes), image::ImageFormat::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 supportedImageBuffer
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 aGenericImage
.flat
module containing types for interoperability with generic channel matrices and foreign interfaces.
§Low level encoding/decoding API
Implementations of ImageEncoder
provides low level control over encoding:
let encoder = JpegEncoder::new_with_quality(&mut writer, 95);
img.write_with_encoder(encoder)?;
While ImageDecoder
and ImageDecoderRect
give access to more advanced decoding options:
let decoder = PngDecoder::new(&mut reader)?;
let icc = decoder.icc_profile();
let img = DynamicImage::from_decoder(decoder)?;
Re-exports§
pub use crate::error::ImageError;
pub use crate::error::ImageResult;
pub use crate::flat::FlatSamples;
Modules§
- buffer
- Iterators and other auxiliary structure for the
ImageBuffer
type. - codecs
- Encoding and decoding for various image file formats.
- error
- Contains detailed error representation.
- flat
- Image representations for ffi.
- imageops
- Image Processing Functions
- io
- deprecated io module the original io module has been renamed to
image_reader
- math
- Mathematical helper functions and types.
- metadata
- Types describing image metadata
Structs§
- Delay
- The delay of a frame relative to the previous one.
- Frame
- A single animation frame
- Frames
- An implementation dependent iterator, reading the frames as requested
- Image
Buffer - Generic image buffer
- Image
Reader - A multi-format image reader.
- Limit
Support - Set of supported strict limits for a decoder.
- Limits
- Resource limits for decoding.
- Luma
- Grayscale colors.
- LumaA
- Grayscale colors + alpha channel
- Pixels
- Immutable pixel iterator
- Rgb
- RGB colors.
- Rgba
- RGB colors + alpha channel
- SubImage
- A View into another image
Enums§
- Color
Type - An enumeration over supported color types and bit depths
- Dynamic
Image - A Dynamic Image
- Extended
Color Type - An enumeration of color types encountered in image formats.
- Image
Format - An enumeration of supported image formats. Not all formats support both encoding and decoding.
Traits§
- Animation
Decoder AnimationDecoder
trait- Encodable
Layout - Types which are safe to treat as an immutable byte slice in a pixel layout for image encoding.
- Generic
Image - A trait for manipulating images.
- Generic
Image View - Trait to inspect an image.
- Image
Decoder - The trait that all decoders implement
- Image
Decoder Rect - Specialized image decoding not be supported by all formats
- Image
Encoder - The trait all encoders implement
- Pixel
- A generalized pixel.
- Pixel
With Color Type - The pixel with an associated
ColorType
. Not all possible pixels represent one of the predefinedColorType
s. - Primitive
- The type of each channel in a pixel. For example, this can be
u8
,u16
,f32
.
Functions§
- guess_
format - Guess image format from memory block
- image_
dimensions - Read a tuple containing the (width, height) of the image located at the specified path. This is faster than fully loading the image and then getting its dimensions.
- load
- Create a new image from a Reader.
- load_
from_ memory - Create a new image from a byte slice
- load_
from_ memory_ with_ format - Create a new image from a byte slice
- open
- Open the image located at the path specified. The image’s format is determined from the path’s file extension.
- save_
buffer - Saves the supplied buffer to a file at the path specified.
- save_
buffer_ with_ format - Saves the supplied buffer to a file at the path specified in the specified format.
- write_
buffer_ with_ format - Writes the supplied buffer to a writer in the specified format.
Type Aliases§
- Gray
Alpha Image - Sendable grayscale + alpha channel image buffer
- Gray
Image - Sendable grayscale image buffer
- Rgb32F
Image - An image buffer for 32-bit float RGB pixels, where the backing container is a flattened vector of floats.
- RgbImage
- Sendable Rgb image buffer
- Rgba32F
Image - An image buffer for 32-bit float RGBA pixels, where the backing container is a flattened vector of floats.
- Rgba
Image - Sendable Rgb + alpha channel image buffer