diff --git a/main.c b/main.c index 140c500..0d4bc56 100644 --- a/main.c +++ b/main.c @@ -11,6 +11,8 @@ int main(int argc, char *argv[]) FILE* src = NULL; FILE* dst = NULL; + unsigned char buffer[5]; + int initOffsetBMP; src = fopen(argv[1], "r"); dst = fopen(argv[2], "w"); @@ -27,5 +29,82 @@ int main(int argc, char *argv[]) return 3; } + printf("Reading BMP\n"); + + fseek(src, 0x0A, SEEK_SET); + buffer[0] = getc(src); + buffer[1] = getc(src); + buffer[2] = getc(src); + buffer[3] = getc(src); + printf("Pixel array offset %02x %02x %02x %02x\n", buffer[3], buffer[2], buffer[1], buffer[0]); + initOffsetBMP = buffer[0] + (buffer[1] >> 8) + (buffer[2] >> 16) + (buffer[3] >> 24); + + fseek(src, 0x12, SEEK_SET); + buffer[0] = getc(src); + buffer[1] = getc(src); + buffer[2] = getc(src); + buffer[3] = getc(src); + printf("Width %02x %02x %02x %02x\n", buffer[3], buffer[2], buffer[1], buffer[0]); + + //fseek(src, 0x12, SEEK_SET); + buffer[0] = getc(src); + buffer[1] = getc(src); + buffer[2] = getc(src); + buffer[3] = getc(src); + printf("Height %02x %02x %02x %02x\n", buffer[3], buffer[2], buffer[1], buffer[0]); + + fseek(src, 0x1C, SEEK_SET); + buffer[0] = getc(src); + buffer[1] = getc(src); + printf("Bits Per Pixel %02x %02x\n", buffer[0], buffer[1]); + + if(buffer[1] != 0 || buffer[0] != 0x18) + { + printf("Could not read BMP\n"); + return 1; + } + + fseek(src, initOffsetBMP, SEEK_SET); + + printf("Now reading BMP pixels and printing them to the RBG565 file\n"); + while(1) + { + buffer[0] = getc(src); + buffer[1] = getc(src); + buffer[2] = getc(src); + if(feof(src)) + break; + printf("Pixel BMP 24 bits R %02X G %02X B %02X ", buffer[2], buffer[1], buffer[0]); + buffer[2] = buffer[2] >> 3; //R + buffer[1] = buffer[1] >> 2; //G + buffer[0] = buffer[0] >> 3; //B + printf("-> RGB 565 R %02X G %02X B %02X ", buffer[2], buffer[1], buffer[0]); + buffer[3] = ((buffer[0] & 0x1F) << 3) + ((buffer[1] & 0x38) >> 3); + buffer[4] = ((buffer[1] & 0x07) << 5) + (buffer[2] & 0x1F); + printf("-> RGB 565 M %02X%02X\n", buffer[3], buffer[4]); + fprintf(dst, "%c%c", buffer[4], buffer[3]); + } + + printf("Done !\n"); + + fclose(src); + fclose(dst); + return 0; } + + + + + + + + + + + + + + + + -- libgit2 0.21.2