用C语言解析BMP文件的结构
来源:优易学  2010-1-14 10:36:50   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  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;
  }

上一页  [1] [2] [3] [4] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训