Skip to content
/ BMP-Rust Public

Rust library to read, write, and create BMP Image files

License

Notifications You must be signed in to change notification settings

stjet/BMP-Rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BMP Rust

BMP Rust is a pure rust library to read and write .bmp Image files. It has zero dependencies.

Besides the basic reading pixel color and changing pixel color, various filters, blurs, and shapes are implemented. The library can also parse the file header, DIB header and other parts of the file. Many useful utility functions are also included.

Install

Obviously, install Rust. Add bmp-rust to your Cargo.toml file:

[dependencies]
bmp-rust ="0.4.1"

You can now use the crate:

use bmp_rust::bmp::BMP;

Documentation

The docs.rs page contains documentation for all functions and types in this library.

First, load a BMP file by file path, or create a new one:

let mut bmp_from_file = BMP::new_from_file("midnight.bmp");
let mut bmp_from_scratch = BMP::new(15, 15, None);

Information can now be read from the file:

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

Or new pixel data can be written to it:

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

Finally, the modified file can be saved to a file:

bmp_from_file.save_to_new("example/images/edited_midnight.bmp").expect("Failed to write to file");

Look at the source code or tests/example for more functions, and their usage.

About

Rust library to read, write, and create BMP Image files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages