#embedded-graphics #gif

no-std tinygif

No-std, high memory footprint GIF image loader

4 releases

0.0.4 Jul 7, 2023
0.0.3 Jun 25, 2023
0.0.2 Jun 7, 2023
0.0.1 Jun 7, 2023

#540 in Images

Download history 20/week @ 2024-07-01 22/week @ 2024-07-08 2/week @ 2024-07-15 8/week @ 2024-07-22 11/week @ 2024-07-29 2/week @ 2024-08-05 3/week @ 2024-08-12 1/week @ 2024-08-19 10/week @ 2024-09-23 42/week @ 2024-09-30

52 downloads per month

MIT/Apache

320KB
855 lines

tinygif

A tiny gif decoder written in no_std Rust. This crate requires about 20kB of memory to decode a gif.

  • basic decoding
  • frame iterator
  • interlace support
  • fails on some highly compressed gifs: Change table size in DecodingDict

Usage

let image = tinygif::Gif::<Rgb565>::from_slice(include_bytes!("../Ferris-240x240.gif")).unwrap();
loop {
    for frame in image.frames() {
        info!("frame {:?}", frame);

        frame.draw(&mut display).unwrap();

        let delay_ms = frame.delay_centis * 10;
        info!("delay {}", delay_ms);
        // Delay here
        // Timer::after(Duration::from_millis(delay_ms as u64)).await;

        // Or, draw at given offset
        // use embedded_graphics::prelude::DrawTargetExt;
        // frame.draw(&mut display.translated(Point::new(30, 50))).unwrap();
    }
}

License

MIT or Apache-2.0 at your option.

License of the gif files used in test

Animated Ferris in Action Happy as a Rustacean at Rust Fest Berlin 2016 (www.rustfest.eu)

Dependencies

~4MB
~49K SLoC