20 releases (10 breaking)

Uses new Rust 2024

0.11.0 Mar 16, 2025
0.10.6 Oct 8, 2023
0.10.5 Sep 21, 2023
0.10.0 Oct 24, 2020
0.3.1 May 29, 2019

#259 in Encoding

Download history 18/week @ 2025-01-27 34/week @ 2025-02-03 24/week @ 2025-02-10 23/week @ 2025-02-17 39/week @ 2025-02-24 28/week @ 2025-03-03 97/week @ 2025-03-10 67/week @ 2025-03-17 11/week @ 2025-03-24 8/week @ 2025-03-31 13/week @ 2025-04-07 10/week @ 2025-04-14 1/week @ 2025-04-21 2/week @ 2025-04-28 21/week @ 2025-05-05 41/week @ 2025-05-12

65 downloads per month
Used in gift-bin

MIT/Apache

110KB
2.5K SLoC

GIFt

A Rust library for encoding and decoding GIF images.

Documentation

https://docs.rs/gift

Decoding

use gift::Decoder;
use std::fs::File;
use std::io::BufReader;

let gif = BufReader::new(File::open("example.gif")?);
for step in Decoder::new(gif) {
    // was there a decoding error?
    let raster = step?.raster();
    // ... work with raster
}

Encoding

use gift::{Encoder, Step};
use pix::{gray::Gray8, Palette, Raster, rgb::SRgb8};
use std::error::Error;
use std::io::Write;

fn encode<W: Write>(mut w: W) -> Result<(), Box<dyn Error>> {
    let mut raster = Raster::<Gray8>::with_clear(4, 4);
    // ... initialize raster ...
    let mut palette = Palette::new(2);
    // ... initialize palette ...
    let step = Step::with_indexed(raster, palette);
    let mut enc = Encoder::new(&mut w).into_step_enc();
    enc.encode_step(&step)?;
    Ok(())
}

NOTE: building a palette from 24- or 32-bit rasters is not yet implemented.

Dependencies

~290KB