4 releases (breaking)
0.4.1 | Feb 24, 2019 |
---|---|
0.4.0 |
|
0.3.0 | Jul 29, 2018 |
0.2.0 | Jun 8, 2018 |
0.0.0 |
|
635KB
2.5K
SLoC
flif.rs
flif.rs 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.
Development
Prerequisites
- rustc (either via rustup or your distributions package manager)
- cargo (via the same method as above)
Building
git clone https://github.com/dgriffen/flif.rs.git
cd flif.rs
cargo build
Usage
- add this crate to your crates
Cargo.toml
like so:
[package]
name = "some_package"
version = "0.0.1"
authors = ["John Doe <you@example.com>"]
[dependencies]
flif = "0.2"
- in the root of your project reference the crate:
extern crate flif;
- 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: {:?}", image.info());
let raw_pixels = image.get_raw_pixels();
}
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
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.
Trademarks
The flif.rs logo is a combination of the official flif logo and Rust logo.
lib.rs
:
Example
extern crate flif;
use std::fs::File;
use std::io::BufReader;
use flif::Flif;
fn main() {
let file = std::fs::File::open("../resources/flif_logo.flif").unwrap();
// use `BufReader` to improve performance
let reader = BufReader::new(file);
let image = Flif::decode(reader).unwrap();
println!("image info: {:?}", image.info());
let raw_pixels = image.raw();
}