2个不稳定版本
0.2.0 | 2020年11月7日 |
---|---|
0.1.0 | 2020年10月17日 |
#2898 in 解析器实现
在 ascii-gif 中使用
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())
});