8 个版本
0.2.0 | 2019 年 10 月 2 日 |
---|---|
0.1.6 | 2019 年 6 月 12 日 |
#463 在 图像
9KB
114 行
tinyppm
使用 Rust 编写的简单 .ppm 加载器。
这更像是一个玩具项目,我写它是为了能够轻松地在 Rust 中的 2D 图形实验中重用它。
用法
v.0.20.0 注意: 此版本引入了正确的错误处理。早期的 tinyppm
在发生意外情况时退出(未识别的标题、不支持的颜色深度、指定的不存在/不可读的文件...)。目前 tinyppm
在发生问题时返回错误。消费者负责决定这是否是关键问题,并采取适当的行动。
注意: 上述更改将需要稍微修改依赖于 tinyppm 0.1.x
的代码。
- 将
tinyppm
添加到您的Cargo.toml
- 调用
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_viewer
: https://github.com/MaciekTalaska/2d_effects/tree/master/ppm_viewer
许可证
此代码根据 MIT 许可证发布。