#gif #animation #frame

gif-dispose

实现了gifcrate的GIF销毁方法。gifcrate仅公开原始帧数据,不足以正确渲染GIF。GIF需要特殊的帧组合,这在本crate中展示为非平凡。

17个稳定版本 (4个主要版本)

5.0.1 2024年7月9日
5.0.0-beta.22024年1月23日
4.0.1 2023年9月21日
4.0.0 2022年11月17日
1.0.1 2017年3月1日

视频中排名第7

Download history 16876/week @ 2024-05-04 15493/week @ 2024-05-11 17241/week @ 2024-05-18 20540/week @ 2024-05-25 78356/week @ 2024-06-01 80422/week @ 2024-06-08 75236/week @ 2024-06-15 111596/week @ 2024-06-22 99372/week @ 2024-06-29 83850/week @ 2024-07-06 78277/week @ 2024-07-13 77545/week @ 2024-07-20 84026/week @ 2024-07-27 72682/week @ 2024-08-03 58105/week @ 2024-08-10 48256/week @ 2024-08-17

每月下载量278,647
28个crate使用(10个直接使用)

MIT/Apache

13KB
162

请正确处理GIF帧

此crate实现了gif crate的GIF销毁方法。

gifcrate仅公开原始帧数据,不足以正确渲染动画GIF。GIF需要特殊的帧组合,这在本crate中展示为非平凡。

用法

let file = File::open("example.gif")?;

let mut gif_opts = gif::DecodeOptions::new();
// Important:
gif_opts.set_color_output(gif::ColorOutput::Indexed);

let mut decoder = gif_opts.read_info(file)?;
let mut screen = gif_dispose::Screen::new_decoder(&decoder);

while let Some(frame) = decoder.read_next_frame()? {
    screen.blit_frame(&frame)?;
    screen.pixels // that's the frame now in RGBA format
}

screen.pixels缓冲区使用ImgVec表示2D图像。

更多请参考examples/explode.rs

要求

  • 最新稳定版Rust(1.45+)

lib.rs:

实现了gif crate的GIF销毁方法。

gifcrate仅公开原始帧数据,不足以正确渲染GIF。GIF需要特殊的帧组合,这在本crate中展示为非平凡。

let file = std::fs::File::open("example.gif")?;

let mut gif_opts = gif::DecodeOptions::new();
// Important:
gif_opts.set_color_output(gif::ColorOutput::Indexed);

let mut decoder = gif_opts.read_info(file)?;
let mut screen = gif_dispose::Screen::new_decoder(&decoder);

while let Some(frame) = decoder.read_next_frame()? {
    screen.blit_frame(&frame)?;
    let _ = screen.pixels_rgba().clone(); // that's the frame now in RGBA format
    let _ = screen.pixels_rgba().to_contiguous_buf(); // that works too
}

依赖项

~550KB