15 个不稳定版本 (3 个破坏性更新)
0.4.1 | 2023 年 3 月 30 日 |
---|---|
0.4.0 | 2023 年 3 月 29 日 |
0.3.4 | 2023 年 3 月 17 日 |
0.3.1 | 2023 年 2 月 22 日 |
0.1.2 | 2022 年 10 月 30 日 |
#209 在 图像 中
125KB
2K SLoC
BMP Rust
BMP Rust 是一个纯 Rust 库,用于读取和写入 .bmp 图像文件。它没有依赖项。
除了基本的读取像素颜色和更改像素颜色外,还实现了各种过滤器、模糊和形状。该库还可以解析文件头、DIB 头和其他文件部分。还包括许多有用的实用函数。
安装
显然,需要安装 Rust。将 bmp-rust 添加到您的 Cargo.toml 文件中
[dependencies]
bmp-rust ="0.4.1"
现在您可以使用该 crate
use bmp_rust::bmp::BMP;
文档
docs.rs 页面包含本库中所有函数和类型的文档。
首先,通过文件路径加载 BMP 文件,或创建一个新的文件
let mut bmp_from_file = BMP::new_from_file("midnight.bmp");
let mut bmp_from_scratch = BMP::new(15, 15, None);
现在可以从文件中读取信息
let file_size = bmp_from_file.get_size(true);
let dib_header = bmp_from_file.get_dib_header().unwrap();
let width = dib_header.width;
let height = dib_header.height;
let pixel_color = bmp_from_file.get_color_of_px(10, 10).unwrap();
或将新的像素数据写入其中
bmp_from_file.change_color_of_pixel(10, 10, [233, 71, 255, 255]).expect("Failed to change color of pixel");
bmp_from_file.fill_bucket([155, 42, 66, 255], 35, 40).expect("Failed to bucket fill");
bmp_from_file.draw_line([100, 65, 45, 255], [20, 20], [52, 52]).expect("Failed to draw line");
bmp_from_file.draw_rectangle(None, Some([255, 255, 255, 255]), [0,2], [15,11]).expect("Failed to draw rect");
bmp_from_file.draw_ellipse([23, 25], 10, 12, [255, 0, 0, 255], Some([125, 64, 64, 255]), true).expect("Failed to draw ellipse");
bmp_from_file.invert(None).expect("Failed to invert");
bmp_from_file.change_opacity(90).expect("Failed to change opacity");
bmp_from_file.draw_image(5, 5, bmp_from_scratch).expect("Failed to draw image");
bmp_from_file.translate(-3, 5);
bmp_from_file.gaussian_blur(3).expect("Failed to gaussian blur");
最后,将修改后的文件保存到文件中
bmp_from_file.save_to_new("example/images/edited_midnight.bmp").expect("Failed to write to file");