#gif #image #decoding #step #codec #raster #decoder

bin+lib gift

用于读取和写入 GIF 图像的库

19 个不稳定版本

0.10.6 2023 年 10 月 8 日
0.10.3 2023 年 8 月 31 日
0.10.0 2020 年 10 月 24 日
0.9.1 2020 年 6 月 25 日
0.3.1 2019 年 5 月 29 日

#302多媒体 类别中

每月 31 下载量

MIT/Apache 许可

120KB
3K SLoC

GIFt

GIF 图像编码和解码的 Rust 库。

文档

https://docs.rs/gift

解码

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
}

编码

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(())
}

注意:尚未实现从 24 位或 32 位光栅创建调色板。

工具

该库附带一个 gift 命令行工具,可以显示 GIF 文件中的块。

cargo install gift --features=cmd

注意:此工具仍在开发中,某些功能尚未实现。

依赖

~0.2–8MB
~55K SLoC