Expand description
GIF en- and decoding library
GIF en- and decoder written in Rust (API Documentation).
GIF encoding and decoding library
This library provides all functions necessary to de- and encode GIF files.
High level interface
The high level interface consists of the two types
Encoder
and Decoder
.
Decoding GIF files
// Open the file
use std::fs::File;
let mut decoder = gif::DecodeOptions::new();
// Configure the decoder such that it will expand the image to RGBA.
decoder.set_color_output(gif::ColorOutput::RGBA);
// Read the file header
let file = File::open("tests/samples/sample_1.gif").unwrap();
let mut decoder = decoder.read_info(file).unwrap();
while let Some(frame) = decoder.read_next_frame().unwrap() {
// Process every frame
}
Encoding GIF files
The encoder can be used so save simple computer generated images:
use gif::{Frame, Encoder, Repeat};
use std::fs::File;
use std::borrow::Cow;
let color_map = &[0xFF, 0xFF, 0xFF, 0, 0, 0];
let (width, height) = (6, 6);
let mut beacon_states = [[
0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0,
0, 1, 1, 0, 0, 0,
0, 0, 0, 1, 1, 0,
0, 0, 0, 1, 1, 0,
0, 0, 0, 0, 0, 0,
], [
0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0,
0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 0, 1, 1, 0,
0, 0, 0, 0, 0, 0,
]];
let mut image = File::create("tests/samples/beacon.gif").unwrap();;
let mut encoder = Encoder::new(&mut image, width, height, color_map).unwrap();
encoder.set_repeat(Repeat::Infinite).unwrap();
for state in &beacon_states {
let mut frame = Frame::default();
frame.width = width;
frame.height = height;
frame.buffer = Cow::Borrowed(&*state);
encoder.write_frame(&frame).unwrap();
}
Frame::from_*
can be used to convert a true color image to a paletted
image with a maximum of 256 colors:
use std::fs::File;
// Get pixel data from some source
let mut pixels: Vec<u8> = vec![0; 30_000];
// Create frame from data
let frame = gif::Frame::from_rgb(100, 100, &mut *pixels);
// Create encoder
let mut image = File::create("target/indexed_color.gif").unwrap();
let mut encoder = gif::Encoder::new(&mut image, frame.width, frame.height, &[]).unwrap();
// Write frame to file
encoder.write_frame(&frame).unwrap();
Structs
A newtype wrapper around an arbitrary extension ID.
Options for opening a GIF decoder.
GIF decoder
An error returned in the case of the image not being formatted properly.
GIF encoder.
A GIF frame
Memory limit in bytes. MemoryLimit(0)
means
that there is no memory limit set.
GIF decoder which supports streaming
Enums
Known GIF block labels.
Output mode for the image data
Indicates whether a certain object has been decoded
Decoding error.
Disposal method
Encoding error.
Known GIF extension labels.
Extension data.
Configures how extensions should be handled
Number of repetitions
One version number of the GIF standard.