10 个版本
0.3.4 | 2024年2月14日 |
---|---|
0.3.3 | 2024年2月14日 |
0.3.1 | 2023年2月21日 |
0.3.0 | 2022年12月24日 |
0.1.3 | 2019年10月28日 |
#160 in 图像
每月54次下载
用于 4 crate
50KB
363 代码行
apng
apng 是 Rust 的动画 PNG 编码器,完全用 Rust 编写。

示例用法
use apng::{Encoder, Frame, PNGImage};
use std::fs::File;
use std::io::BufWriter;
use std::path::Path;
fn main() {
let files = vec![
"rust_logo1.png",
"rust_logo2.png",
"rust_logo3.png",
"rust_logo4.png",
"rust_logo5.png",
"rust_logo6.png",
];
let mut png_images: Vec<PNGImage> = Vec::new();
for f in files.iter() {
png_images.push(apng::load_png(f).unwrap());
}
let path = Path::new(r"sample/out.png");
let mut out = BufWriter::new(File::create(path).unwrap());
let config = apng::create_config(&png_images, None).unwrap();
let mut encoder = Encoder::new(&mut out, config).unwrap();
let frame = Frame {
delay_num: Some(1),
delay_den: Some(2),
..Default::default()
};
match encoder.encode_all(png_images, Some(&frame)) {
Ok(_n) => println!("success"),
Err(err) => eprintln!("{}", err),
}
}
自定义每帧速度

let mut i = 1;
for image in png_images.iter() {
i += 1;
let frame = Frame {
delay_num: Some(1),
delay_den: Some(i), // 2, 3, 4, 5, 6, 7
..Default::default()
};
encoder.write_frame(image, frame).unwrap();
}
示例代码在此 处。
许可证
另请参阅
参考
依赖项
~3MB
~63K SLoC