From 38988a1fd612b1d3cd883a1facba2e71b1b4ea66 Mon Sep 17 00:00:00 2001 From: Oliver Schinagl Date: Wed, 26 Jan 2005 08:33:39 +0000 Subject: Raw to interleaved, not bmp to raw here! --- Tools/rawint/src/main.c | 90 +++++++++++++++---------------------------------- 1 file changed, 28 insertions(+), 62 deletions(-) diff --git a/Tools/rawint/src/main.c b/Tools/rawint/src/main.c index 17a6da7..20308cd 100644 --- a/Tools/rawint/src/main.c +++ b/Tools/rawint/src/main.c @@ -3,75 +3,41 @@ int main(int argc, char *argv[]) { int retval; - FILE *fbmp, *fraw; - unsigned char mrgb[3], mask, *bitmap; - int row, col, x, y, offset; + FILE *fraw, *frawmask, *frawint; + unsigned char mrgb[3]; + int totsize, x, y; 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"))) { + + if (argc < 4) { + fprintf(stderr, "%s (C) 2004 by oliver\n", argv[0]); + fprintf(stderr, "Usage: %s x-res y-res in.raw mask.raw out.int\n", + argv[0]); + } else { + x = atoi(argv[1]); + y = atoi(argv[2]); + if (NULL == (fraw = fopen(argv[3], "rb"))) { perror("fopen(IMAGE_FILE)"); retval = 1; - } else if (NULL == (fraw = fopen(argv[3], "wb"))) { + } else if (NULL == (frawmask = fopen(argv[4], "rb"))) { + perror("fopen(MASK_FILE)"); + retval = 1; + } else if (NULL == (frawint = fopen(argv[5], "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); + } else { + for (totsize = 0; totsize < (x*y); totsize++) { + fread(&mrgb, 1, 1, frawmask); + fwrite(&mrgb, 1, 1, frawint); + fread(&mrgb, 1, 3, fraw); + fwrite(&mrgb, 1, 3, frawint); + } + fprintf(stdout, "Done interleaving\n"); + fclose(fraw); + fclose(frawmask); + fclose(frawint); } - } + } return retval; } -- cgit v0.12