#ppm #decoder #codec #ppm-decoder

zune-ppm

便携式像素图和便携式浮点图格式解码器和编码器

2个不稳定版本

0.5.0-rc02024年4月7日
0.4.0 2023年11月16日

884图像

Download history 61/week @ 2024-04-20 102/week @ 2024-04-27 50/week @ 2024-05-04 78/week @ 2024-05-11 176/week @ 2024-05-18 45/week @ 2024-05-25 410/week @ 2024-06-01 237/week @ 2024-06-08 70/week @ 2024-06-15 32/week @ 2024-06-22 66/week @ 2024-06-29 21/week @ 2024-07-06 10/week @ 2024-07-13 29/week @ 2024-07-20 236/week @ 2024-07-27 164/week @ 2024-08-03

每月441次下载
用于 zune-image

MIT 或 Apache-2.0 或 Zlib

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)]以帮助防止未来的不安全代码。

依赖关系