#bmp #rgb #pixel #data #debugging #file #valid

simple-bmp

将RGB像素写入有效BMP文件的一个简单库

3个不稳定版本

0.2.1 2024年4月5日
0.2.0 2024年3月16日
0.1.0 2024年3月16日

621 in 图像

MIT许可证

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();

无运行时依赖