[−][src]Crate png
PNG encoder and decoder
This crate contains a PNG encoder and decoder. It supports reading of single lines or whole frames.
The decoder
The most important types for decoding purposes are Decoder
and
Reader
. They both wrap a std::io::Read
.
Decoder
serves as a builder for Reader
. Calling Decoder::read_info
reads from the Read
until the
image data is reached.
Using the decoder
use std::fs::File; // The decoder is a build for reader and can be used to set various decoding options // via `Transformations`. The default output transformation is `Transformations::EXPAND // | Transformations::STRIP_ALPHA`. let decoder = png::Decoder::new(File::open("tests/pngsuite/basi0g01.png").unwrap()); let (info, mut reader) = decoder.read_info().unwrap(); // Allocate the output buffer. let mut buf = vec![0; info.buffer_size()]; // Read the next frame. An APNG might contain multiple frames. reader.next_frame(&mut buf).unwrap(); // Inspect more details of the last read frame. let in_animation = reader.info().frame_control.is_some();
Encoder
Using the encoder
// For reading and opening files use std::path::Path; use std::fs::File; use std::io::BufWriter; let path = Path::new(r"/path/to/image.png"); let file = File::create(path).unwrap(); let ref mut w = BufWriter::new(file); let mut encoder = png::Encoder::new(w, 2, 1); // Width is 2 pixels and height is 1. encoder.set_color(png::ColorType::RGBA); encoder.set_depth(png::BitDepth::Eight); let mut writer = encoder.write_header().unwrap(); let data = [255, 0, 0, 255, 0, 0, 0, 255]; // An array containing a RGBA sequence. First pixel is red and second pixel is black. writer.write_image_data(&data).unwrap(); // Save
Modules
chunk | Chunk types and functions |
Structs
AnimationControl | Animation control information |
Decoder | PNG Decoder |
Encoder | PNG Encoder |
FrameControl | Frame control information |
Info | PNG info struct |
Limits | Limits on the resources the |
OutputInfo | Output info |
PixelDimensions | Pixel dimensions information |
Reader | PNG reader (mostly high-level interface) |
StreamWriter | Streaming png writer |
StreamingDecoder | PNG StreamingDecoder (low-level interface) |
Transformations | Output transformations |
Writer | PNG writer |
Enums
BitDepth | Bit depth of the png file |
BlendOp | How pixels are written into the buffer. |
ColorType | Describes the layout of samples in a pixel |
Compression | The type and strength of applied compression. |
Decoded | Result of the decoding process |
DecodingError | |
DisposeOp | How to reset buffer of an animated png (APNG) at the end of a frame. |
EncodingError | |
FilterType | The byte level filter applied to scanlines to prepare them for compression. |
Unit | Physical unit of the pixel dimensions |