#codec #encoder #decoder #file #animator #decoding #pro

flic

Autodesk Animator FLI和Autodesk Animator Pro FLC文件编解码器

7个版本

使用旧的Rust 2015

0.1.6 2017年7月22日
0.1.5 2017年4月29日
0.1.4 2017年2月3日
0.1.2 2017年1月21日
0.1.0 2016年10月23日

#243 in 视频


用于 2 crates

MIT 许可证

175KB
4K SLoC

LibFLIC 版本 状态

关于

LibFLIC提供了对Autodesk Animator FLI和Autodesk Animator Pro FLC文件的编解码支持。

代码基于Jim Kent发布并由Animator和Animator Pro的文档和源代码。

LibFLIC完全使用Rust编写。提供了对底层编解码器的C绑定。

示例

examples/目录中提供了一些示例程序

  • quickfli - 一个简单的FLIC播放器。
  • recompress - 加载和保存FLIC文件。
  • browse - 显示邮票(缩略图)。

要克隆此存储库,请运行

git clone https://github.com/wangds/libflic.git

然后使用Cargo构建库并运行示例程序。

cargo build --example quickfli

要播放FLIC文件,请运行

cargo run --example quickfli <example.flc>

基本用法

将LibFLIC添加到项目的Cargo.toml作为依赖项

[dependencies]
flic = "0.1"

在项目中导入库,例如

extern crate flic;

use flic::{FlicFile,RasterMut};

FlicFile类型指向从磁盘流出的FLIC文件。当打开FLIC文件时,它将首先读取FLIC元数据,例如动画的尺寸和速度。FlicFile将保持文件打开状态。

let flic = FlicFile::open(Path::new("example.flc"))?;

为将要解码的动画分配像素数据和调色板数据缓冲区。

let flic_w = flic.width() as usize;
let flic_h = flic.height() as usize;
let mut buf = vec![0; flic_w * flic_h];
let mut pal = vec![0; 3 * 256];

将这些两个缓冲区及其尺寸和步长组合在一起,形成一个单一的RasterRasterMut类型会非常方便。

LibFLIC将请求一个Raster类型,对于需要只读访问缓冲区的操作(例如编码),当它需要读写访问时(例如解码),则请求一个RasterMut类型。

例如,要解码一帧,我们首先创建一个RasterMut,如下所示通过可变借用bufpal。Rasters易于创建,因此无需担心频繁创建和丢弃。

let mut raster = RasterMut::new(flic_w, flic_h, &mut buf, &mut pal);
flic.read_next_frame(&mut raster);

由于FLIC文件存储连续帧之间的差异,当读取动画中的下一帧时,确保缓冲区和调色板包含前一帧数据的责任由库用户承担。

文档

作者

王大卫

依赖项

~210KB