3个不稳定版本
0.2.1 | 2024年4月5日 |
---|---|
0.2.0 | 2024年3月16日 |
0.1.0 | 2024年3月16日 |
621 in 图像
9KB
119 行
将RGB像素写入有效BMP文件的一个简单库。
有时候,特别是在调试时,你只想将一些数据以图像的形式写入,以便查看。我找到的所有crate都过于复杂(TM)。我所想要的只是一个函数,可以将一些像素写入一个可以被图像查看器打开的图像文件。我所得到的是难以阅读的类型,这些类型是针对位深度、存储位的数值类型、颜色通道顺序和图像格式的泛型;需要15次函数调用才能写入数据的crate;API强制你使用愚蠢的set_pixel函数而不是简单的像素数据切片;以及所有可能的工具。
这个crate就是我所想要的那个函数。它也是no_std和no_alloc,因为当crate的核心目的不需要标准库时,强制要求使用它是令人烦恼的。
示例
const WIDTH: usize = 500;
const HEIGHT: usize = 500;
let mut pixels = [0u8; WIDTH * HEIGHT * 3];
// Draw a simple gradient
for y in 0..HEIGHT {
for x in 0..WIDTH {
pixels[y * WIDTH * 3 + x * 3 + 0] = 240;
pixels[y * WIDTH * 3 + x * 3 + 1] = 100;
pixels[y * WIDTH * 3 + x * 3 + 2] = y as u8;
}
}
// Buffer for the BMP data
let mut image = [0u8; simple_bmp::buffer_length(500, 500)];
// Write the pixels into the BMP buffer
simple_bmp::write_bmp(&mut image, WIDTH, HEIGHT, &pixels).unwrap();
// Maybe you want to store the BMP on disk
// std::fs::write("./image.bmp", &image).unwrap();