2个不稳定版本

0.2.0 2020年11月7日
0.1.0 2020年10月17日

#2898 in 解析器实现


ascii-gif 中使用

MIT/Apache

1.5MB
546

yaged (另一个GIF编码解码器)

基于GIF89a规范的GIF编码解码器。

示例

使用ColorMap颜色输出模式解码GIF文件。

let file = &mut File::open(Path::new("./ascii-gif-example.gif")).unwrap();
let gif = decode(file, ColorOutput::ColorMap).unwrap();

使用RGBA颜色输出模式解码GIF文件。

let file = &mut File::open(Path::new("./ascii-gif-example.gif")).unwrap();
let gif = decode(file, ColorOutput::RGBA).unwrap();

有待完成的工作

  • 处理交错标志
  • 处理清理方法
  • 处理用户输入
  • 支持更多扩展块
  • 解码优化
  • 实现GIF编码

lib.rs:

基于GIF89a规范的GIF编码解码器。

解码

use {std::fs::File, std::path::Path};

// decodes a gif using ColorMap ColorOutput mode
let file = &mut File::open(Path::new("./ascii-gif-example.gif")).unwrap();
let color_map_gif = yaged::decoder::decode(file, yaged::decoder::ColorOutput::ColorMap).unwrap();
color_map_gif.frames().iter().for_each(|frame| {
 assert!(frame.rgba_raster_data().is_none())
});

// decodes a gif using RGBA ColorOutput mode
let file = &mut File::open(Path::new("./ascii-gif-example.gif")).unwrap();
let rgba_gif = yaged::decoder::decode(file, yaged::decoder::ColorOutput::RGBA).unwrap();
// with this color output mode the rgba_raster_data() will be present in each frame
rgba_gif.frames().iter().for_each(|frame| {
 assert!(frame.rgba_raster_data().is_some())
});

依赖