int colorbmp2bwbmp(char * f_in, char * f_out)
{
int infileLen; //文件长度
int n=0; //n 字节计数器
unsigned char c,c_in; //C_in文件字节,C转化
FILE *fh_in;
FILE *fh_out;
assert((f_in != NULL) && (f_out != NULL));
fh_in=fopen(f_in,"rb");
if (NULL==fh_in)
{
printf("open read file error!!");
return 1;
}
fseek(fh_in,0,SEEK_END);
infileLen=ftell(fh_in);
fseek(fh_in,0,SEEK_SET);
/*read bmp file head,14 BYTE*/
if (sizeof(file_head)!=fread(&file_head,1,sizeof(file_head),fh_in))
{
printf("read bmp file error!!");
fclose(fh_in);
return 1;
}
/*判断是不是BMP文件*/
if (file_head.bfType!=0x4d42)
{
printf("bmp file error!!");
fclose(fh_in);
return 1;
}
/*文件指针移到文件开始处*/
fseek(fh_in,0,SEEK_SET);
fh_out=fopen(f_out,"wb");
if (NULL==fh_out)
{
printf("open write file error!!");
return 1;
}
/*把文件头读入目标文件*/
while((int)file_head.bfOffBits--)
{
c_in=getc(fh_in);
c=c_in;
putc(c,fh_out);
}
/*转为黑白片*/
while (n<(infileLen-(int)file_head.bfOffBits))
{
c_in=getc(fh_in);
c=c_in;
if (c>0x7f)
{
c =0xff;
}
else
{
c = 0x00;
}
putc(c,fh_out);
n++;
}
fclose(fh_in);
fclose(fh_out);
return 0;
}
责任编辑:cyth