8 个版本

0.2.0 2019 年 10 月 2 日
0.1.6 2019 年 6 月 12 日

#463图像

MIT 许可证

9KB
114

tinyppm

使用 Rust 编写的简单 .ppm 加载器。

这更像是一个玩具项目,我写它是为了能够轻松地在 Rust 中的 2D 图形实验中重用它。

用法

v.0.20.0 注意: 此版本引入了正确的错误处理。早期的 tinyppm 在发生意外情况时退出(未识别的标题、不支持的颜色深度、指定的不存在/不可读的文件...)。目前 tinyppm 在发生问题时返回错误。消费者负责决定这是否是关键问题,并采取适当的行动。

注意: 上述更改将需要稍微修改依赖于 tinyppm 0.1.x 的代码。

  1. tinyppm 添加到您的 Cargo.toml
  2. 调用 read_image_data
extern crate tinyppm;

fn my_function(filename: &String) {
    let ppm_image_result = tinyppm::ppm_loader::read_image_data(filename);
    let ppm_image = match ppm_image_result {
        Ok(image) => image,
        _ => panic!("unable to read specified image file!"),
    };
    // `ppm_image` is now a struct containing image with, height and pixels 
}

返回的结构定义为以下内容

pub struct PPMImage {
    height: usize,
    width: usize,
    pixels: Vec<u32>,
}

它公开了 3 个公共方法

    pub fn height() -> usize {
        // returns image height
    }

    pub fn width() -> usize {
        // returns image width
    }

    pub fn pixels() -> &Vec<u32> {
        // returns reference to buffer containing pixels
    } 

详情

  • 仅支持 '原始 ppm' 格式(最流行的 ppm 格式。更多信息: ppm 格式规范)。

  • tinyppm 仅支持真彩色图像(即每像素 24 位 - 3 个颜色通道 & 每通道 8 位)。在读取图像后,将其转换为 RGB+A 格式(32bpp),以便可以直接推送到帧缓冲区。

其他示例

如果您想查看其工作原理,请查看用 Rust 编写的简单图像查看器 ppm_viewerhttps://github.com/MaciekTalaska/2d_effects/tree/master/ppm_viewer

许可证

此代码根据 MIT 许可证发布。

无运行时依赖项