We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
hi i am writing a c program for converting a *.bmp file to its equivalent hex file.i have written the following code but i am not able to get the pixel information .i want information if file is monochrome that is 1bit/pixel format.
#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<math.h> long extract(FILE *,long ,int );void information(FILE *);long extract(FILE *fp1,long offset,int size) {unsigned char *ptr;unsigned char temp='0';long value=0L; int i;//to initialize the ptrptr=&temp;//sets the file pointer at specific position i.e. after the offset fseek(fp1,offset,SEEK_SET);//now extracting (size) values starting from the offset for(i=1;i<=size;i++){fread(ptr,sizeof(char),1,fp1);value=(long)(value+(*ptr)*(pow(256,(i-1)))); //combining the values one after another in a single variable }return value;} void information(FILE *fp1){FILE *fp4;if((fp4=fopen("info.txt","w"))==NULL) {printf("naError while creating a file.nSystem is exiting ..... ");exit(0);} fprintf(fp4,"Header Information"); fprintf(fp4,"nnThe Magic Number or Signatur of the file : %c%c",(char)extract(fp1,0L,1),(char)extract(fp1,1L,1)); fprintf(fp4,"nThe size of the file : %ld bytes",extract(fp1,2L,4)); fprintf(fp4,"nUnused reserve data, application specific : ",extract(fp1,6L,2)); fprintf(fp4,"nUnused reserve data, application specific : ",extract(fp1,8L,2)); fprintf(fp4,"nThe offset where the bitmap data or pixel can be found : %d bytes",(int)extract(fp1,10L,4)); fprintf(fp4,"nThe number of bytes in the header (after this point) : %d bytes",(int)extract(fp1,14L,4)); fprintf(fp4,"nThe width of the bitmap in pixel : %d pixel",(int)extract(fp1,18L,4)); fprintf(fp4,"nThe height of the bitmap in pixel : %d pixel",(int)extract(fp1,22L,4)); fprintf(fp4,"nNumber of color planes being used : %d plane",(int)extract(fp1,26L,2)); fprintf(fp4,"nThe number of bits/pixel : %d bits",(int)extract(fp1,28L,2)); fprintf(fp4,"nCompression style : %d ",(int)extract(fp1,30L,4)); fprintf(fp4,"nThe size of the raw bmp data(after the header) : %d bytes",(int)extract(fp1,34L,4)); fprintf(fp4,"nThe horizontal resolution of the image : %d pixels/meter",(int)extract(fp1,38L,4)); fprintf(fp4,"nThe vertical resolution of the image : %d pixels/meter",(int)extract(fp1,42L,4)); fprintf(fp4,"nNumber of colors in the palette : %d colors",(int)extract(fp1,46L,4)); fprintf(fp4,"nImportant colors : %d colors",(int)extract(fp1,50L,4)); } void main(void) {int row,col;int i,j,k;int dataoffset,offset;char magicnum[2]; FILE *fp1,*fp2;clrscr();if((fp1=fopen("abc.bmp","rb"))==NULL) { printf("anCant open the image.nSystem is exiting."); goto exitcode;} //setting the file pointer at the beginning //fseek(fp1,0L,SEEK_SET);rewind(fp1); //CHECKING WHETHER THE FILE IS IN BMP FORMAT OR NOT, WE CHECK THE MAGIC NUMBER OF THE FILE, MAGIC NUMBER'S OFFSET IS 0 i.e. IT'S STORED AT THE FRONT OF THE IMAGE, AND THE SIZE IS 2 //at first extracting the magic number for(i=0;i<2;i++){magicnum[i]=(char)extract(fp1,i,1); } //now checking if((magicnum[0]=='B') && (magicnum[1]=='M')); else{ printf("aThe image is not a bitmap image.nSystem is exiting ...... "); goto exitcode; } //storing the header information information(fp1);//get the starting position or offset of the data(pixel) dataoffset=(int)extract(fp1,10,4); printf("dataoffset=%dn",dataoffset);//get the number of rows row=(int)extract(fp1,22,4); printf("row=%dn",row); //get the number of columnscol=(int)extract(fp1,18,4); printf("column=%dn",col); //storing the data if((fp2=fopen("pixel.txt","wb"))==NULL) { printf("anError while creating a file.nSystem is exiting...."); goto exitcode;} offset=dataoffset; for(j=0;j<col;j++) { for(k=0;k<row;k++) { for(i=0;i<3;i++) {fprintf(fp2,"%d",(int)extract(fp1,offset++,1));fprintf(fp2," "); }fprintf(fp2," "); } fprintf(fp2,"n"); offset+=2; } printf("nFor image information see info.txt.nFor pixels see pixel.txt."); exitcode: fcloseall()getch(); }
please help
You posted exactly the same at www.8052.com/.../178067 a couple of days ago, and haven't bothered to reply to the responses that you got there!
And on that forum, the code was also posted inline, instead of properly tag it as code.
Some people are more or less permanently in output-only mode - never reading posting instructions, or reading answers.