[][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 Decoder is allowed too use

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