2个不稳定版本
0.5.0-rc0 | 2024年4月7日 |
---|---|
0.4.0 | 2023年11月16日 |
884 在 图像 中
每月441次下载
用于 zune-image
130KB
2K SLoC
zune-ppm
一种便携像素格式(PPM)和便携浮点图格式(PFM)解码器和编码器
此crate包含一个解码器和编码器,它理解ppm规范,因此可以解析这些格式。
格式 | 解码器 | 编码器 |
---|---|---|
P1-P3 | 否 | 否 |
P5 | 是 | 是 |
P6 | 是 | 是 |
P7 | 是 | 是 |
PFM | 是 | 否 |
使用方法
简单的解码过程如下
use zune_ppm::PPMDecoder;
use zune_ppm::PPMDecodeErrors;
use zune_core::result::DecodingResult;
fn main()->Result<(),PPMDecodeErrors>{
let mut decoder = PPMDecoder::new(&[]);
let pix = decoder.decode()?;
match pix {
DecodingResult::U8(_) => {
// deal with 8 bit images
}
DecodingResult::U16(_) => {
// deal with 16 bit images
}
DecodingResult::F32(_) => {
// deal with 32 bit images (PFM)
},
_=>unreachable!()
};
Ok(())
}
请注意,必须处理所有路由,因为PPM有多种类型。
速度
PPM不是一个速度重要的格式,因此省略了基准测试。尽管如此,该库仍然非常高效。
安全性
在CI中持续模糊测试此crate以确保不受信任的输入不会导致panic。
该库还具有#!forbid[(unsafe_code)]
以帮助防止未来的不安全代码。