#bitmap #bmp #decoding #image

bmp_rs

A bitmap file decoder for Microsoft bmp files

8 releases

Uses old Rust 2015

0.0.9 Feb 24, 2018
0.0.6 Feb 22, 2018
0.0.3 Sep 25, 2017
0.0.2 Aug 27, 2017

#862 in Images

21 downloads per month

Apache-2.0

33KB
737 lines

bmp_rs

A bitmap file decoder for Microsoft bmp files.

Development Status

The following is a rough list of things that are already supported or will be in the future:

  • 1-bit bitmap
  • 4-bit uncompressed bitmap
  • 4-bit compressed bitmap
  • 8-bit uncompressed bitmap
  • 8-bit compressed bitmap
  • 16-bit bitmap
  • 24-bit bitmap
  • 32-bit bitmap
  • Microsoft BMP Version 1 header
  • Microsoft BMP Version 2 header
  • Microsoft BMP Version 3 header
  • Microsoft BMP Version 4 header
  • Microsoft BMP Version 5 header
  • IBM OS/2 1.x BMP header (32k x 32k limit)
  • IBM OS/2 2.x BMP header
  • OS/2 Bitmap Array type
  • OS/2 Color Icon type
  • OS/2 Color Pointer type
  • OS/2 Struct Icon type
  • OS/2 Pointer type
  • Extended decoding that returns header data
  • Bitmap Encoding
  • Test suite
  • Documentation
  • Examples

Example

use std::fs::File;
use bmp_rs::{
    Result,
    Decoder,
};

struct ImageDecoder {
    // Your builder type that is able to construct an image
}

struct Image {
    // Your image type that represents a bitmap
}

impl Decoder for ImageDecoder {
    type TResult = Image; // Your image type

    fn set_size( &mut self, width: u32, height: u32 ) {
        // Set image size
    }

    fn set_pixel( &mut self, x: u32, y: u32, r: u8, g: u8, b: u8, a: u8 ) {
        // Set a specific pixel within that image to the given color
    }

    fn build( &mut self ) -> Result<Self::TResult> {
        // Build and return your final image
        Ok ( Image { } )
    }
}

fn main() {
    let mut file = File::open( "image.bmp" ).unwrap();
    let image = bmp_rs::decode( &mut file, ImageDecoder { } );
    // Do something with your image
}

License

See LICENSE file.

Dependencies

~165KB