4 releases

✓ Uses Rust 2018 edition

0.2.2 Mar 20, 2020
0.2.1 Feb 17, 2020
0.2.0 Feb 17, 2020
0.1.1 Jan 15, 2020
0.1.0 Mar 3, 2019

#51 in Embedded development

Download history 139/week @ 2019-12-10 212/week @ 2019-12-17 280/week @ 2019-12-24 252/week @ 2019-12-31 580/week @ 2020-01-07 479/week @ 2020-01-14 323/week @ 2020-01-21 329/week @ 2020-01-28 351/week @ 2020-02-04 281/week @ 2020-02-11 295/week @ 2020-02-18 209/week @ 2020-02-25 181/week @ 2020-03-03 194/week @ 2020-03-10 497/week @ 2020-03-17 274/week @ 2020-03-24

1,323 downloads per month
Used in 14 crates (3 directly)

MIT/Apache

89KB
1.5K SLoC

TinyBMP

Build Status Crates.io Docs.rs

Documentation

A small BMP parser designed for embedded, no-std environments but usable anywhere. Beyond parsing the image header, no other allocations are made. A reference to the input image data is kept and slices are returned from it.

Example

use tinybmp::{Bmp, FileType, Header, Pixel};

let bmp = Bmp::from_slice(include_bytes!("../tests/chessboard-8px-24bit.bmp"))
    .expect("Failed to parse BMP image");

// Read the BMP header
assert_eq!(
    bmp.header,
    Header {
        file_type: FileType::BM,
        file_size: 314,
        reserved_1: 0,
        reserved_2: 0,
        image_data_start: 122,
        bpp: 24,
        image_width: 8,
        image_height: 8,
        image_data_len: 192
    }
);

// Check that raw image data slice is the correct length (according to parsed header)
assert_eq!(bmp.image_data().len(), bmp.header.image_data_len as usize);

// Get an iterator over the pixel coordinates and colors in this image and collect into a vec
let pixels: Vec<Pixel> = bmp.into_iter().collect();

// Loaded example image is 8x8px
assert_eq!(pixels.len(), 8 * 8);

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~710KB
~14K SLoC