Tedd OKANO
/
bmp_8bit_per_pixel_format
Revision 0:45f5cdf3329b, committed 2011-01-18
- Comitter:
- okano
- Date:
- Tue Jan 18 10:19:07 2011 +0000
- Commit message:
- for Andrew-san
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 45f5cdf3329b main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Jan 18 10:19:07 2011 +0000 @@ -0,0 +1,127 @@ +#include "mbed.h" // for mbed +LocalFileSystem local("local"); // for mbed to access local file system + +/* + * + * BMP file data handler sample + * + * reference : http://www.umekkii.jp/data/computer/file_format/bitmap.cgi + * + */ + +#include <stdio.h> + +//#define SOURCE_FILE "/local/small.bmp" +#define SOURCE_FILE "/local/pre4.bmp" +//#define SOURCE_FILE "pre_dsp_4.bmp" + +#define BUFFER_SIZE 1024 + +typedef struct bmp_header_st { + unsigned short bfType __attribute__((packed)); + unsigned long bfSize __attribute__((packed)); + unsigned short bfReserved1 __attribute__((packed)); + unsigned short bfReserved2 __attribute__((packed)); + unsigned long bfOffBits __attribute__((packed)); + + unsigned long biSize __attribute__((packed)); + long biWidth __attribute__((packed)); + long biHeight __attribute__((packed)); + unsigned short biPlanes __attribute__((packed)); + unsigned short biBitCount __attribute__((packed)); + unsigned long biCompression __attribute__((packed)); + unsigned long biSizeImage __attribute__((packed)); + long biXPixPerMeter __attribute__((packed)); + long biYPixPerMeter __attribute__((packed)); + unsigned long biClrUsed __attribute__((packed)); + unsigned long biCirImportant __attribute__((packed)); +} +bmp_header; + +typedef struct color_palette_st { + unsigned char red; + unsigned char green; + unsigned char blue; + unsigned char dummy; +} +color_palette; + + +int main() { + unsigned char buffer[ BUFFER_SIZE ]; + FILE *fs; + bmp_header bh; + color_palette cp[256]; + unsigned long readsize; + unsigned long i; + unsigned long ofset = 0; + + printf( "BMP file access sample\r\n"); + + if ( NULL == (fs = fopen( SOURCE_FILE, "rb" )) ) { + printf( "file open error when oening file \"%s\"\r\n", SOURCE_FILE ); + return ( 1 ); + } + + /* + * reading header + */ + + fread( &bh, sizeof( bh ), 1, fs ); + + printf( " bfType : 0x%04X\r\n", bh.bfType ); + printf( " bfSize : %ld\r\n", bh.bfSize ); + printf( " bfOffBits : %ld\r\n", bh.bfOffBits ); + printf( " biSize : %lu\r\n", bh.biSize ); + printf( " biWidth : %ld\r\n", bh.biWidth ); + printf( " biHeight : %ld\r\n", bh.biHeight ); + printf( " biPlanes : %d\r\n", bh.biPlanes ); + printf( " biBitCount : %d\r\n", bh.biBitCount ); + printf( " biCompression : %lu\r\n", bh.biCompression ); + printf( " biSizeImage : %lu\r\n", bh.biSizeImage ); + printf( " biXPixPerMeter : %ld\r\n", bh.biXPixPerMeter ); + printf( " biYPixPerMeter : %ld\r\n", bh.biYPixPerMeter ); + printf( " biClrUsed : %lu\r\n", bh.biClrUsed ); + printf( " biCirImportant : %lu\r\n", bh.biCirImportant ); + + /* + * checking header + */ + + if ( (bh.bfType != 0x4D42) + || (bh.bfOffBits != 54 + 256 * sizeof( color_palette ) ) + || (bh.biBitCount != 8) + || (bh.biCompression != 0) + ) { + printf( "unsupported file format\r\n" ); + return ( 1 ); + } + + /* + * header information + */ + + printf( "header read, the image data size is %lu bytes\r\n", bh.bfSize ); + printf( " the image data size is %lu bytes\r\n", bh.biSizeImage ); + printf( " horizontal size %lu pixels\r\n", bh.biWidth ); + printf( " vertical size %lu pixels\r\n", bh.biHeight ); + + /* + * read color palette + */ + + for ( i = 0; i < 256; i++ ) { + fread( &(cp[i]), sizeof( color_palette ), 1, fs ); +// printf( "cp 0x%02X : 0x%02X - 0x%02X - 0x%02X\r\n", i, (cp[i]).red, (cp[i]).green, (cp[i]).blue ); + } + + + while ( 0 != (readsize = fread( buffer, sizeof( unsigned char ) , BUFFER_SIZE, fs )) ) { + for ( i = 0; i < readsize; i++ ) { +// printf( " %6lX : 0x%02X, 0x%02X, 0x%02X\r\n", ofset, cp[ buffer[i] ].red, cp[ buffer[i] ].green, cp[ buffer[i] ].blue ); + ofset++; + } + } + + printf( "done.\r\n\r\n" ); +}
diff -r 000000000000 -r 45f5cdf3329b mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Jan 18 10:19:07 2011 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/e2ac27c8e93e