I want to write a program to convert a bitmap file of an image into binary form using macros in C
What I have tried:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#define RGB(r,g,b) (r|g<<8|b<<16)
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;
ptr=&temp;
fseek(fp1,offset,SEEK_SET);
for(i=1;i<=size;i++)
{
fread(ptr,sizeof(char),1,fp1);
value=(long)(value+(*ptr)*(pow(256,(i-1))));
}
return value;
}
void information(FILE *fp1)
{
printf("\nThe width of the bitmap in pixel : %d pixel\n",(int)extract(fp1,18L,4));
printf("\nThe height of the bitmap in pixel : %d pixel\n",(int)extract(fp1,22L,4));
}
int main()
{
int row,col;
int i,j,k;
int dataoffset,offset;
char num[2];
int color;
FILE *fp1,*fp2;
if((fp1=fopen("C:\\Users\\Raghava\\Desktop\\logo104.bmp","rb"))==NULL)
{
printf("\a\nCant open the image.\nSystem is exiting.");
}
rewind(fp1);
for(i=0;i<2;i++)
{
num[i]=(char)extract(fp1,i,1);
}
if((num[0]=='B') && (num[1]=='M'));
else
{
printf("\a The image is not a bitmap image.\n System is exiting ...... ");
}
information(fp1);
dataoffset=(int)extract(fp1,10,4);
row=(int)extract(fp1,22,4);
col=(int)extract(fp1,18,4);
if((fp2=fopen("pixel2.txt","wb"))==NULL)
{
printf("\a\n Error while creating a file.\n System is exiting....");
}
offset=dataoffset;
for(k=0;k<row;k++)
{
for(j=0;j<col;j++)
{
}
fprintf(fp2,"\r\n");
}
printf("\n For pixels see pixel2.txt.");
return 0;
}