Skip to content
flif decoder written in Rust
Branch: master
Clone or download
Latest commit 1c77f76 Feb 24, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
flif-cli fix 0.4 checklist Feb 24, 2019
flif fix 0.4 checklist Feb 24, 2019
fuzz udpdate fuzz target Aug 1, 2018
resources add rgba edge test Dec 26, 2018
.gitignore cleanup warning and fix bin Dec 24, 2017
.travis.yml fix 0.4 checklist Feb 24, 2019
Cargo.toml Grayscale support, optimizations, API changes (#21) Jun 7, 2018
LICENSE-APACHE dual license Oct 2, 2018
LICENSE-MIT dual license Oct 2, 2018 finish 0.4 doc updates Feb 22, 2019 add specification notes Aug 26, 2017 update logo to svg Aug 26, 2017


Build Status version license is a Rust implementation of the flif16 image format. This project was inspired by the work on flif-rs.

Current Status

Currently this project in alpha stage. As of right now pixel data can be decoded but only for a limited subset of valid flif images. The most significant limitations are:

  • Animations are not supported.
  • Interlaced images are not supported.
  • Certain transformations are not supported.

As this project progresses more and more missing features will end up being supported.



  • rustc (either via rustup or your distributions package manager)
  • cargo (via the same method as above)


  • git clone
  • cd
  • cargo build


  1. add this crate to your crates Cargo.toml like so:
name = "some_package"
version = "0.0.1"
authors = ["John Doe <>"]

flif = "0.2"
  1. in the root of your project reference the crate:
extern crate flif;
  1. the crate can now be used to decode flif headers :D
extern crate flif;

use std::fs::File;
use std::io::BufReader;
use flif::Flif;

fn main() {
    let file = std::fs::File::open("/path/to/image.flif").unwrap();
    // use `BufReader` to improve performance
    let reader = BufReader::new(file);
    let image = Flif::decode(reader).unwrap();
    println!("image info: {:?}",;
    let raw_pixels = image.get_raw_pixels();


Licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


The logo is a combination of the official flif logo and Rust logo.

You can’t perform that action at this time.