From 811492fd4c878ae528806e11d0fffc00ff00683a Mon Sep 17 00:00:00 2001 From: Oliver Schinagl Date: Wed, 26 Jan 2005 08:34:09 +0000 Subject: BMP to raw C files added. --- Tools/bmpraw/src/main.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Tools/bmpraw/src/main.c diff --git a/Tools/bmpraw/src/main.c b/Tools/bmpraw/src/main.c new file mode 100644 index 0000000..17a6da7 --- /dev/null +++ b/Tools/bmpraw/src/main.c @@ -0,0 +1,77 @@ +#include +#include + +int main(int argc, char *argv[]) { + int retval; + FILE *fbmp, *fraw; + unsigned char mrgb[3], mask, *bitmap; + int row, col, x, y, offset; + + retval = 0; + + if (4 != argc) { + fprintf(stderr, "bmpraw (C) 2004 by oliver\n"); + fprintf(stderr, "Usage: %s {24|8} in.bmp out.raw\n", argv[0]); + } else { + if (NULL == (fbmp = fopen(argv[2], "rb"))) { + perror("fopen(IMAGE_FILE)"); + retval = 1; + } else if (NULL == (fraw = fopen(argv[3], "wb"))) { + perror("fopen(OUT_FILE)"); + retval = 1; + } else { + fseek(fbmp, 10L, SEEK_SET); + fread(mrgb, 1, 4, fbmp); + offset = mrgb[3]; + offset <<= 8; + offset += mrgb[2]; + offset <<= 8; + offset += mrgb[1]; + offset <<= 8; + offset += mrgb[0]; + fseek(fbmp, 18L, SEEK_SET); + fread(mrgb, 1, 4, fbmp); + x = mrgb[3]; + x <<= 8; + x += mrgb[2]; + x <<= 8; + x += mrgb[1]; + x <<= 8; + x += mrgb[0]; + fseek(fbmp, 22L, SEEK_SET); + fread(mrgb, 1, 4, fbmp); + y = mrgb[3]; + y <<= 8; + y += mrgb[2]; + y <<= 8; + y += mrgb[1]; + y <<= 8; + y += mrgb[0]; + fseek(fbmp, offset, SEEK_SET); + printf("Image Resolution: %dx%d\n", x, y); + + bitmap = malloc(4 * (x * y)); + for (row = y; row; row--) { + for (col = 0; col != x; col++) { + if (24 == atoi(argv[1])) { + fread(&mrgb, sizeof(char), 3, fbmp); + bitmap[(((row *x) +col) *3) +0] = mrgb[2]; + bitmap[(((row *x) +col) *3) +1] = mrgb[1]; + bitmap[(((row *x) +col) *3) +2] = mrgb[0]; + } else if (8 == atoi(argv[1])) { + fread(&mrgb, sizeof(char), 1, fbmp); + bitmap[((row *x) +col)] = mrgb[0]; + } + } + } + + fwrite(bitmap, (24 == atoi(argv[1])) ? 3 : 1, (long)(x * y), fraw); + fprintf(stdout, "Converting to raw\n"); + free(bitmap); + fclose(fbmp); + fclose(fraw); + } + } + + return retval; +} -- cgit v0.12